我一直试图解决这个问题几天但我无法弄清问题是什么。
我在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()中失败,它在抽象父类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中放入什么值,我都会收到错误
无效的登录令牌。 Issuer与providerName
不匹配
at cid.getid(getIdRequest)。
如果您在Mobile Hub中创建应用并生成代码,则可以免费下载大部分代码。然后,您可以配置身份验证提供程序 - FB,Google等。
我做错了什么?
感谢。
修改:以下是我尝试过的示例 令牌始终是地图中的对象。以下是不同的密钥
答案 0 :(得分:3)
好的,我找到了答案 - 我在loginMap中输入了错误的键值。
应该是
正如在问题中链接的文档中所述
cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>
我不知道我怎么没看到。