我们已经为未经身份验证的访问集成了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的示例代码。

08-08 00:56