Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AWS Cognito+;谷歌注册_Javascript_Amazon Web Services_Aws Sdk_Aws Cognito - Fatal编程技术网

Javascript AWS Cognito+;谷歌注册

Javascript AWS Cognito+;谷歌注册,javascript,amazon-web-services,aws-sdk,aws-cognito,Javascript,Amazon Web Services,Aws Sdk,Aws Cognito,我已经尝试了下面的代码,它工作得很好。但是,我需要将这些注册详细信息存储在用户池中(此外,我还需要添加一些自定义属性)。但是我没有找到一个合适的方法来做这件事 函数符号回调(authResult){ AWS.config.region='us-XXXXXXX-1'; //将Google访问令牌添加到Cognito凭据登录映射。 AWS.config.credentials=新的AWS.CognitoIdentityCredentials({ IdentityPoolId:'us-XXXXX-1

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

函数符号回调(authResult){
AWS.config.region='us-XXXXXXX-1';
//将Google访问令牌添加到Cognito凭据登录映射。
AWS.config.credentials=新的AWS.CognitoIdentityCredentials({
IdentityPoolId:'us-XXXXX-1:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
RoleArn:'arn:aws:iam::XXXXXXXX:role/Cognito\uuxxxxxxxx unauth\u role',
登录:{
'accounts.google.com':authResult['id_token']
}
});
//获得AWS证书
AWS.config.credentials.get(函数(err){
警惕(err);
如果(错误){
控制台日志(err);
}否则{
//client=new AWS.CognitoSyncManager();
log(AWS.config.credentials);
log(“Cognito标识Id:+AWS.config.credentials.identityId”);
}});
}

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


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

是否有一种方法可以在不使用托管UI登录的情况下完成此操作?我认为很多移动示例都在某种程度上规避了这样做的需要,但我很难在web上找到这样做的示例。如果您想在Cognito Userpool中使用Google/Fb登录等(这是在Userpool中自动保存Fb/G+用户所必需的),您仍然需要使用Userpool的OAuth端点。您可以尝试绕过Cognito UI,直接进入Fb/Google登录页面。查看此链接:是否可以将使用google signin创建的帐户与通过电子邮件创建的帐户相链接?您可以使用AdminLinkProviderForUser API调用进行类似操作。首次登录Google之前,您需要将Google与电子邮件帐户链接。@agent420和mugzi使用Google登录后,我们会获得所需的JWT令牌,可用于进一步的处理,但通常来自Google登录的用户名、电子邮件、手机等用户数据又如何呢。我们还希望这些详细信息存储在我们的Cognito用户池中以供进一步使用。如何使用Cognito托管的UI登录获取这些信息。请让我知道,因为我被困在这个部分