我使用的Cognito用户池没有任何后备身份;用户池登录名是唯一使用的身份验证(AWS Cognito Sign-In (Android))。在与此一起使用CognitoCachingCredentialsProvider
时,我遇到了一个问题:似乎没有记录我应该将HashMap
到setLogins
中的Key用作什么值。我已经找到了第三方身份提供者的示例(“ accounts.google.com”,“ graph.facebook.com”,“ www.amazon.com”),但是使用了其中任何一种,或者我在某处找到的建议解决方案"www.cognito-idp.us-east-1.amazonaws.com/[UserPoolID]"
或我最初尝试使用用户池本身的名称时,都给出了Invalid login token. Issuer doesn't match providerName
的错误,而我已经耗尽了一些想法来随机抛出问题并希望它们起作用。
对于通过Cognito用户池直接验证的用户进入setLogins
的HashMap,正确的密钥值应该是什么?
答案 0 :(得分:1)
确切的格式应为字符串:“ cognito-idp”。 +区域+“ .amazonaws.com /” +用户池ID。这是我使用的代码-请注意,我所在的地区与您所在的地区不同,因此请编辑您的地区以使用us-east-1。
Map<String, String> logins = new HashMap<String, String>();
String iss = "cognito-idp.eu-central-1.amazonaws.com/" + AWSConstants.USER_POOLS_POOL_ID;
logins.put(iss, jwtToken);
credentialsProvider.setLogins(logins);
希望有帮助!