我们已经完成了对未经身份验证的访问的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()),Token作为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。
请建议我如何解决这些错误并提供一些更新的参考资料,以便我了解这些错误的原因。
答案 0 :(得分:2)
看起来您正在登录地图中设置令牌,而不是developer guide中所述的开发者提供商的令牌字段。您可能还想参考我们在GitHub上提供的end-to-end example,其中包括iOS和Android的示例代码。
答案 1 :(得分:1)
Hurreyyy,我解决了AWS Cognito Service的开发人员身份验证问题。它易于理解但很难实现。
这是解决方案:
CognitoSyncClientManager.init(this, cognitoParams);
CognitoSyncClientManager.credentialsProvider.clearCredentials();
CognitoSyncClientManager.addLogins(AppConstants.DEVELOPER_PROVIDER, strToken);
您可以从CognitoSyncDemo获取CognitoSyncClientManager。
感谢所有
答案 2 :(得分:0)
确保您从developerProvider.getProviderName()
返回的值与您在Amazon Cognito控制台中注册的值相同,如Associate Developer Provider section of the Developer Authenticated Identities topic in the Amazon Cognito Developer Guide下的步骤所述。