AWS Cognito AdminLinkProviderForUser-用户池帐户和Facebook

我们的设置是:

  • 创建电子邮件/密码帐户或Facebook登录

我能够使用AWS Cognito成功地彼此独立创建。

我要解决的问题是,如果用户首先拥有一个电子邮件/密码帐户,然后单击Facebook登录,我希望他们链接并提示用户确认他们有权访问该电子邮件/密码帐户。

一旦用户确认继续操作,他们应该可以使用Facebook登录或电子邮件/密码登录来访问和调整同一帐户。

Cognito用户池中的Facebook用户: -Facebook User in Cognito User Pool

在Cognito用户池中链接到Facebook用户的电子邮件/密码用户: Email/Password User Linked in Cognito User Pool to Facebook User

我当前正在使用“预注册触发器”来自动验证电子邮件,确认和关联帐户。对于社交网站(Facebook),我正在使用:

GET amazoncognito.com/oauth2/authorize?identity_provider=Facebook&response_type=code then

POST amazoncognito.com/oauth2/token

这可行,但是我以Facebook_ user 身份进行身份验证,而我的期望(并希望)是在那时将身份验证为链接用户。我觉得我缺少明显的东西。

ou562970340 回答:AWS Cognito AdminLinkProviderForUser-用户池帐户和Facebook

最终,答案是我没有从用户ID中删除Facebook_。因此,我理论上是将我的Cognito电子邮件/密码链接到'Facebook_USERID'而不是'USERID'。

进行了此更改后,我就可以通过1个关联的帐户进行身份验证。

// Get Email
        var params = {
          UserPoolId: 'YOUR_USER_POOL',AttributesToGet: ['sub','email'],Filter: "email = \"" + event.request.userAttributes.email + "\""
        }
        cognito.listUsers(params,(err,data) => {
            if (err) {
                console.log(err,err.stack);
            }
            else {
                console.log(data);
                console.log(event.userName);
                if(data != null && data.Users != null && data.Users[0] != null)
                {
                  console.log(data.Users[0].Username);
                  var params = {
                    DestinationUser: { 
                      ProviderAttributeValue: data.Users[0].Username,ProviderName: 'Cognito'
                    },SourceUser: { 
                      ProviderAttributeName: 'Cognito_Subject',ProviderAttributeValue: event.userName.split("_")[1],ProviderName: 'Facebook'
                    },UserPoolId: 'YOUR_USER_POOL'
                  };
                  cognito.adminLinkProviderForUser(params,function(err,data) {
                    if (err) console.log(err,err.stack); // an error occurred
                    else     console.log(data);           // successful response
                  });
                }
            }
        });
本文链接:https://www.f2er.com/3120056.html

大家都在问