我已经尝试解决这个问题几天了,但我不知道问题出在哪里。
我在 AWS Cognito 上有一个用户池和一个身份池。我已运行示例代码并使用它成功登录 Facebook 和 Google+ 并注册用户。登录后,我可以使用令牌进行身份验证以使用 SNS 或同步服务。
我已经注册了一个用户并通过 Cognito Identity 获得了一个令牌(登录后)。然而,下一步是使用令牌在身份池中进行身份验证。这就是我不断收到错误的地方
我已按照将用户池与 Amazon Cognito Identity 集成中的说明进行操作,并获得了一个令牌,然后尝试将其与池 ID 一起传递给凭证提供程序。
credentialsProvider.clear();
credentialsProvider.withLogins(loginMap).refresh();
Run Code Online (Sandbox Code Playgroud)
我的代码在刷新()时失败。此时,credentialsProvider 是一个 AWSBasicCognitoIdentityProvider,并且在 super.refresh() 中调用抽象父类 AWSAbstractCognitoIdentityProvider 中的 getIdentityId() 时,refresh() 失败
@Override
public String getIdentityId() {
if (identityId == null) {
GetIdRequest getIdRequest = new GetIdRequest()
.withAccountId(getAccountId())
.withIdentityPoolId(getIdentityPoolId())
.withLogins(loginsMap);
appendUserAgent(getIdRequest, getUserAgent());
GetIdResult getIdResult = cib.getId(getIdRequest);
Run Code Online (Sandbox Code Playgroud)
无论我在登录映射中输入什么值,我都会收到错误
登录令牌无效。发行者与提供者名称不匹配
在 cid.getid(getIdRequest)。
如果您在 Mobile Hub 中创建应用程序并生成代码,则大部分代码都可以免费下载。然后您可以配置身份验证提供程序 - FB、Google 等。
我究竟做错了什么 ?
谢谢。
编辑:以下是我尝试过的示例令牌始终是地图中的对象。下面是不同的按键
authentication android identity amazon-web-services amazon-cognito