放大联合登录不返回 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

迁移到 Swift 3 时,Facebook 登录不会返回应用程序

Facebook批处理API不返回用户电子邮件ID

联合 google 登录问题(aws 放大和反应原生)