如何仅为经过 Developer 认证的开发人员集成 AWS Cognito?

How to integrate AWS Cognito for only Developer authenticated developers?

我们已经为未经身份验证的访问集成了 AWS,但是当我们尝试进行经过身份验证的访问时,我们收到 InvalidParameterException 错误:请提供有效的 public 提供商。

我们使用以下步骤将 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 class,它扩展了 AWSAbstractCognitoDeveloperIdentityProvider;我们提供开发者提供者名称 (developerProvider.getProviderName()) 并且令牌作为 OpenID 令牌。

但我遇到以下错误:

Caused by: com.amazonaws.services.cognitoidentity.model.InvalidParameterException: Please provide a valid public provider

有时我会收到以下错误: 禁止使用身份 ID。 我无法理解这些错误的原因。我提到了以下网址: 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.

请建议我如何解决这些错误,并提供一些更新的参考资料,以便我了解这些错误的原因。

确保您从 developerProvider.getProviderName() 返回的值与您在 Amazon Cognito 控制台中注册的值相同,如 Associate Developer Provider section of the Developer Authenticated Identities topic in the Amazon Cognito Developer Guide 下的步骤所述。

您似乎是在登录映射中设置令牌,而不是 GitHub 上可用的 developer guide. You may also want to refer to our end-to-end example 中指出的您的开发人员提供商的令牌字段,其中包括 GitHub 的示例代码 iOS 和 Android.

Hurreyyy,我解决了 AWS Cognito 服务的开发人员身份验证问题。它很容易理解,但很难实施。

这是解决方案:

CognitoSyncClientManager.init(this, cognitoParams); CognitoSyncClientManager.credentialsProvider.clearCredentials(); CognitoSyncClientManager.addLogins(AppConstants.DEVELOPER_PROVIDER, strToken);,您可以从 CognitoSyncDemo 获取 CognitoSyncClientManager。 感谢大家