如何使用 Cognito Identity 向我的 Identity/User 池进行身份验证?

How can i authenticate to my Identity/User Pool with Cognito Identity?

几天来我一直在尝试解决这个问题,但我不知道问题出在哪里。

我在 AWS Cognito 上有一个用户池和一个身份池。我有 运行 示例代码,并使用它在 Facebook 上登录和注册用户并成功 Google+。登录后,我可以使用令牌进行身份验证以使用 SNS 或同步服务。

我已经使用 Cognito Identity 注册了一个用户并获得了一个令牌(登录后)。但是,下一步是使用令牌对身份池进行身份验证。这是我不断收到错误的地方

我已按照 Integrating User Pools with Amazon Cognito Identity 的说明进行操作,并获得了一个令牌,然后尝试将其与池 ID 一起传递给凭据提供程序。

  credentialsProvider.clear();
  credentialsProvider.withLogins(loginMap).refresh();

我的代码在 refresh() 上失败。此时 credentialsProvider 是 AWSBasicCognitoIdentityProvider 并且 refresh() 在 super.refresh() 中失败,它在抽象父 class 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);

无论我在 loginsMap 中输入什么值,我都会得到错误

Invalid login token. Issuer doesn't match providerName

在 cid.getid(getIdRequest)。

如果您在 Mobile Hub 中创建应用程序并生成代码,则大部分代码都可以免费下载。然后,您可以配置身份验证提供程序 - FB、Google 等

我做错了什么?

谢谢。

Edit :以下是我尝试过的示例 令牌始终是地图中的对象。下面是不同的键

好的,我找到了答案 - 我在 loginMap 中输入了错误的键值。

应该是

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

正如问题中链接的文档中所说

我不知道我怎么没看到。