我们已经为未经身份验证的访问集成了aws,但是当我们尝试进行身份验证的访问时,会出现invalidParameterException错误:请提供有效的公共提供程序。
我们使用以下步骤将aws集成到应用程序中:
DeveloperAuthenticationProvider developerProvider = new DeveloperAuthenticationProvider(
AppConstants.AWS_ACCOUNT_ID, AppConstants.IdentityPoolId, Regions.EU_WEST_1
);
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
getActivity(),
developerProvider,
Regions.EU_WEST_1);
//set Logings for Authenticated Access
HashMap<String, String> loginsMap = new HashMap<String, String>();
loginsMap.put(developerProvider.getProviderName(), Token);
credentialsProvider.setLogins(loginsMap);
credentialsProvider.refresh();
我们已经完成了developerAuthenticationProvider类的扩展,它扩展了awsabstractCognitodeveloperIdentityProvider;在这里,我们提供了开发人员提供程序名称(developerProvider.getProviderName()),令牌是作为openid令牌的。
但我有以下错误:
Caused by: com.amazonaws.services.cognitoidentity.model.InvalidParameterException: Please provide a valid public provider
有时我会犯错误:
禁止使用身份证。
我不明白这些错误的原因。我引用了以下网址:
https://docs.aws.amazon.com/cognito/devguide/identity/developer-authenticated-identities/,https://mobile.awsblog.com/post/Tx3E3NJURV1LNV1/Integrating-Amazon-Cognito-using-developer-authenticated-identities-An-end-to-en。
请建议我如何解决这些错误,并提供一些更新的参考资料,我可以了解这些错误的原因。
最佳答案
看起来您正在logins映射中设置令牌,而不是developer guide中指出的开发人员提供程序的令牌字段。您还可以参考github上提供的end-to-end example,其中包括ios和android的示例代码。