我正在使用 AWS Amplify 添加社交签名。通过谷歌,我收到了用户的电子邮件,但它在 facebook 中丢失了。
这是我的代码:
federatedSignIn(provider: any): void {
switch (provider) {
case 'facebook':
console.log("Authenticating using Facebook");
Auth.federatedSignIn({ provider: CognitoHostedUIIdentityProvider.Facebook });
break;
case 'google':
console.log("Authenticating using Google");
Auth.federatedSignIn({ provider: CognitoHostedUIIdentityProvider.Google });
break;
}
}
这就是“预注册” Lambda 所认为的事件。{
"version": "1",
"region": "us-east-1",
"userPoolId": "us-east-xxxxxx",
"userName": "Facebook_123456",
"callerContext": {
"awsSdkVersion": "aws-sdk-unknown-unknown",
"clientId": "123456abcd"
},
"triggerSource": "PreSignUp_ExternalProvider",
"request": {
"userAttributes": {
"email_verified": "false",
"cognito:email_alias": "",
"phone_number_verified": "false",
"cognito:phone_number_alias": ""
},
"validationData": {}
},
"response": {
"autoConfirmUser": false,
"autoVerifyEmail": false,
"autoVerifyPhone": false
}
}
用户池设置属性映射
最佳答案
问题在于 <amplify-facebook-button>
因为它使用身份池工作流而不是用户池工作流。使用 federatedSignIn()
创建自定义按钮工作。
<button slot="federated-buttons" (click)=customSignIn()>Facebook</button>
customSignIn(): void{
Auth.federatedSignIn({provider: CognitoHostedUIIdentityProvider.Facebook });
}
更多信息:https://github.com/aws-amplify/amplify-js/issues/8823
关于javascript - 放大联合登录不返回 Facebook 的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68960054/