import { useState, useEffect } from "react";
import { fetchUserAttributes } from "aws-amplify/auth";
import { useNavigate } from "react-router-dom"; // Add react-router-dom for navigation
function App(props) { // No need for WithAuthenticatorProps here in JavaScript
const [email, setEmail] = useState(""); // Email state
const [userGroups, setUserGroups] = useState([]); // Explicitly declare as empty array
const navigate = useNavigate(); // Hook for navigation
useEffect(() => {
// Fetch user attributes, including groups
fetchUserAttributes().then((userAttrs) => {
setEmail(userAttrs.email || "");
}) .catch((error) => {
console.error("Error fetching user attributes", error);
});;
}, [navigate]);
return (
<>
<p>Hello {email}</p>
<p>
You can <button onClick={props.signOut}>logout</button>
</p>
</>
);
}
export default App;
I am trying to get the email attribute from the user. Upon logging in, I get this error:
“Error fetching user attributes NotAuthorizedException: Access Token does not have required scopes”
I have already set the scope to include “openid” and “email” when configuring AWS Amplify as well as on the Cognito App Client side. I can log in successfully but cannot retrieve the email. How can I fix this?
I set the scopes to “openid” and “email” here. (and on the App Client)
// Configure AWS Amplify
Amplify.configure({
Auth: {
Cognito: {
loginWith: {
oauth: {
redirectSignIn: ["http://localhost:5173"],
redirectSignOut: ["http://localhost:5173"],
domain: "us-east-domain",
providers: ["Google"],
scopes: ["openid", "email"],
responseType: "code",
},
},
userPoolId: "userpoolid",
userPoolClientId: "userpoolclientid",
},
},
});
user28587481 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
10
Missing “aws.cognito.signin.user.admin”, causing the API call to cognito to fail.
user28587481 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.