我几天来一直在尝试解决这个问题,但我不知道问题出在哪里。
我在 AWS Cognito 上有一个用户池和一个身份池。我已运行示例代码并使用它成功登录 Facebook 和 Google+ 并注册用户。登录后,我可以使用 token 进行身份验证以使用 SNS 或同步服务。
我已经注册了一个用户并通过 Cognito Identity 获得了一个 token (登录后)。然而,下一步是使用 token 在身份池中进行身份验证。这就是我不断收到错误的地方
我已按照 Integrating User Pools with Amazon Cognito Identity 的指示进行操作我得到一个 token ,然后尝试将它与池 ID 一起传递给凭证提供者。
credentialsProvider.clear();
credentialsProvider.withLogins(loginMap).refresh();
我的代码在刷新()时失败。此时credentialsProvider是一个AWSBasicCognitoIdentityProvider,并且refresh()在super.refresh()中失败,该refresh()调用抽象父类AWSAbstractCognitoIdentityProvider中的getIdentityId()
@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);
无论我在登录映射中输入什么值,我都会收到错误
Invalid login token. Issuer doesn't match providerName
在 cid.getid(getIdRequest) 处。
如果您在 Mobile Hub 中创建应用并生成代码,则大部分代码都可以免费下载。然后,您可以配置身份验证提供程序 - FB、Google 等。
我做错了什么?
谢谢。
编辑:以下是我尝试过的示例 token 始终是映射中的对象。下面是不同的键
- “cognito-identity.amazonaws.com”
- 用户池 ID - us-east-1_xxxxxxxxx
- 用户池 ARN - cognito-idp:us-east-1:xxxxxxxxxxxx:userpool/us-east-1_xxxxxxxxx
最佳答案
好的,我找到了答案 - 我在登录映射中输入了错误的键值。
应该是
cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>
正如问题中链接的文档中所述
我不知道我怎么没看到这一点。
关于android - 如何使用 Cognito Identity 对我的身份/用户池进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37034332/