我有一个使用 AWS javascript SDK 的 Angular 应用程序,并且可以使用 Facebook 和 Google 成功登录。我能够创建 Cognito 身份,并且在我的联合身份池中看到了该身份。我还可以使用经过 IAM 身份验证的 API 端点(我在调用的 Lambda 中看到了用户的 cognitoId)。
我想使用用户的电子邮件地址作为数据库(DynamoDB)中的密钥,因此我试图弄清楚如何从可信来源(Cognito(首选)或身份验证提供者的 JWT)访问用户的电子邮件地址。
访问用户电子邮件地址的最佳方式是什么?
更新:在客户端(javascript)我使用联合身份与谷歌和 Facebook 令牌。社交登录正在运行,我可以通过 Cognito 进行身份验证,通过登录:
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:****',
Logins: {
'accounts.google.com': authResult['id_token']
}
});
然后我做AWS.config.credentials.get()
了,我可以得到类似的东西AWS.config.credentials.identityId
,但我找不到 accessToken 或调用来获取 JWT 的方法。我想我需要打电话result.getAccessToken().getJwtToken()
,但我找不到。
他们获得 accessToken 的所有示例似乎都使用.authenticateUser(authenticationDetails())
了 ,但详细信息包括用户名和密码(不是联合登录)。