AWS Cognito + Google注册

mug*_*gzi 6 javascript amazon-web-services aws-sdk aws-cognito

我已经尝试下面的代码,它工作正常。但是,我需要将这些注册详细信息存储在用户池中(此外,我还想添加一些自定义属性)。但是我没有找到合适的方法来做到这一点。

function signinCallback(authResult) {
			AWS.config.region = 'us-XXXXXXX-1';
            // Add the Google access token to the Cognito credentials login map.
            AWS.config.credentials = new AWS.CognitoIdentityCredentials({
                IdentityPoolId: 'us-XXXX-1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
                RoleArn: 'arn:aws:iam::XXXXXXXX:role/Cognito_XXXXXXXXXUnauth_Role',
                Logins: {
                    'accounts.google.com': authResult['id_token']
                }
            });

            // Obtain AWS credentials
            AWS.config.credentials.get(function (err) {
                alert(err);
                if (err) {
                    console.log(err);
                } else {
                    //client = new AWS.CognitoSyncManager();
                    console.log(AWS.config.credentials);
                    console.log("Cognito Identity Id: " + AWS.config.credentials.identityId);
					}});
					
					}
Run Code Online (Sandbox Code Playgroud)
<span class="g-signin" data-callback="signinCallback" data-clientid="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXX.apps.googleusercontent.com"
   data-cookiepolicy="single_host_origin" data-requestvisibleactions="http://schemas.google.com/AddActivity"
    data-scope="https://www.googleapis.com/auth/plus.login">
</span>
Run Code Online (Sandbox Code Playgroud)

我要保存在这里。

在此处输入图片说明

age*_*420 5

根据您的代码段,您正在使用Cognito联合身份(即身份池)并将Google令牌添加到登录地图。这不会将Google用户添加到您的Cognito用户池中,因为在联合身份中,Cognito用户池只是另一个类似于Google的身份提供程序(IdP)。就像在用户池中注册新用户不会创建新的Google或Facebook帐户一样,添加Google令牌也不会创建新的用户池用户。简而言之,Cognito Userpool与IdentityPool分开,并且IdentityPool中的活动(例如在登录映射中添加Google令牌)不会对其产生影响。

如果您想将google用户自动添加到您的用户池中,有一种方法可以这样做。您需要直接将Google作为身份提供者添加到您的Userpool中,并使用Cognito的内置(即托管)UI进行登录。此后,所有Google登录名将自动在Userpool中创建一个新用户。现在,只需将您的用户池添加到身份池中即可,即从身份池中删除Google。在登录映射中,您将始终使用Cognito令牌。即使您使用Google(通过托管UI)登录,Google令牌也会直接发送到userpool,并且出售Cognito令牌。另外,请确保在用户池中指定正确的属性映射。

  • 有没有一种方法可以在不使用Hosted UI进行登录的情况下完成此操作?我认为许多移动示例在某种程度上规避了执行此操作的需要,但是我很难找到在网络上进行相同操作的示例。 (4认同)