小编d4c*_*312的帖子

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

我已经尝试解决这个问题几天了,但我不知道问题出在哪里。

我在 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 等。

我究竟做错了什么 ?

谢谢。

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

  • “认知身份.amazonaws.com”
  • 用户池 ID - us-east-1_xxxxxxxxx …

authentication android identity amazon-web-services amazon-cognito

2
推荐指数
1
解决办法
2887
查看次数