放大联合登录不返回 Facebook 的电子邮件
Posted
技术标签:
【中文标题】放大联合登录不返回 Facebook 的电子邮件【英文标题】:Amplify Federated Sign In not returning Email for Facebook 【发布时间】:2021-10-27 18:51:23 【问题描述】:我正在使用 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
用户池设置
属性映射
【问题讨论】:
您能否提供一个实际的示例请求和响应(当然是经过消毒的)来展示它当前返回的内容? 看起来这在this previous answer 中有介绍,它也有一些关于场景的有用的cmets。 @George lambda 接收到的事件是它当前返回的。 @GaryArcher 是的,我认为你是正确的。但我找不到任何关于如何使用 cognito 事件再次调用 facebook api 的示例代码。你知道如何获取访问令牌吗? 【参考方案1】:问题在于<amplify-facebook-button>
,因为它使用身份池工作流程而不是用户池工作流程。使用federatedSignIn()
worked 创建一个自定义按钮。
<button slot="federated-buttons" (click)=customSignIn()>Facebook</button>
customSignIn(): void
Auth.federatedSignIn(provider: CognitoHostedUIIdentityProvider.Facebook );
更多信息:https://github.com/aws-amplify/amplify-js/issues/8823
【讨论】:
以上是关于放大联合登录不返回 Facebook 的电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
iOS登录与Facebook不返回电子邮件甚至参数和权限给出
IOS Facebook SDK:尽管授予权限,但登录不返回电子邮件
Cordova Facebook 登录仅返回 accessToken