当用户使用oauth登录时,我需要获取用户的属性。目前Hub.listen向我返回一些用户数据,如下所示:
{
"Session": null,
"authenticationFlowType": "USER_SRP_AUTH",
"client": {
"endpoint": "https://cognito-idp.us-east-1.amazonaws.com/",
"fetchOptions": [Object]
},
"keyPrefix": "CognitoIdentityServiceProvider.vifuv747v73gj48v",
"pool": {
"advancedSecurityDataCollectionFlag": true,
"client": [Client],
"clientId": "vifuv747v73gj48v",
"storage": [Function MemoryStorage],
"userPoolId": "us-east-1_gkfke8e",
"wrapRefreshSessionCallback": [Function anonymous]
},
"signInUserSession": {
"accessToken": [CognitoAccessToken],
"clockDrift": 0,
"idToken": [CognitoIdToken],
"refreshToken": [CognitoRefreshToken]
},
"storage": [Function MemoryStorage],
"userDataKey": "CognitoIdentityServiceProvider.sdfj656fs5efsdf45es.Google_0000000000000000000000.userData",
"username": "Google_0000000000000000000000"
}
此外,我无法使用currentAuthenticatedUser()
访问它们
const { attributes } = await Auth.currentAuthenticatedUser();
//attributes === undefined
当用户注册时,我必须在数据库中执行某些任务,等等。因此,我想知道如何识别oauth的登录是否创建了一个新帐户来执行必要的任务。或者,如果失败,我可以访问子,检查该用户是否已经存在,并在它是新用户的情况下执行任务
了解如何在使用Oauth登录时访问属性:
const user = await Auth.currentAuthenticatedUser();
const attributes = user.signInUserSession?.idToken?.payload;
我注意到这增加了一些额外的属性,但它满足了我的需要。