使用Android上的Cognito身份池登录Google

使用Android上的Cognito身份池登录Google,android,amazon-cognito,google-signin,aws-amplify,Android,Amazon Cognito,Google Signin,Aws Amplify,我正在尝试为我的android应用程序登录谷歌 我目前通过AWSMobileClient.getInstance().federatedSignIn(…)实现了facebook登录。我没有使用托管UI 我通过请求从google获得一个令牌 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(get

我正在尝试为我的android应用程序登录谷歌

我目前通过AWSMobileClient.getInstance().federatedSignIn(…)实现了facebook登录。我没有使用托管UI

我通过请求从google获得一个令牌

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build();

    GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(requireActivity(), gso);

    googleSignInButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent signInIntent = mGoogleSignInClient.getSignInIntent();
            startActivityForResult(signInIntent, RC_SIGN_IN);
        }
    });
一旦google成功验证,我调用以下方法:

private void federatedGoogle(GoogleSignInAccount account) {
    // Need to create federated sign in from aws amplify
    Log.d(TAG, "federateGoogle: " + account.getIdToken());
    AWSMobileClient.getInstance().federatedSignIn(IdentityProvider.GOOGLE.toString(), account.getIdToken(), new Callback<UserStateDetails>() {
        @Override
        public void onResult(final UserStateDetails userStateDetails) {
            Log.d(TAG, "AWS Federated GOOGLE");
        }

        @Override
        public void onError(Exception e) {
            Log.e(TAG, "sign-in error GOOGLE", e);
        }
    });
}
private void federatedGoogle(谷歌登录账号){
//需要从aws amplify创建联合登录
Log.d(标记“FederateToogle:+account.getIdToken());
AWSMobileClient.getInstance().federatedSignIn(IdentityProvider.GOOGLE.toString()、account.getIdToken()、new Callback()){
@凌驾
public void onResult(最终用户状态详细信息用户状态详细信息){
Log.d(标记为“AWS联合谷歌”);
}
@凌驾
公共无效申报人(例外e){
Log.e(标签“登录错误谷歌”,e);
}
});
}
我得到以下错误:

原因:com.amazonaws.services.cognitoidentity.model.NotAuthorizedException:令牌不是来自此标识池的受支持提供商。(服务:Amazon认知身份;状态代码:400;错误代码:NotAuthorizedException;请求ID:98936aed-df1b-4849-bc03-9eb5edc364e8)

我已经三次检查了我的Cognito身份池身份验证提供者Google+:Google客户端ID,它与Google API控制台提供的匹配

在Cognito用户池中,我是否遗漏了什么?我能找到的所有教程都是针对托管UI的,federatedSignIn()是否不可用于google登录


谢谢

你找到解决办法了吗?我也面临着同样的问题,soNo,我搜索了一个解决方案,但是,我发现一些报告说,自从google+被弃用以来,google auth提供程序被破坏了。相反,我最终使用Cognito用户poolsOk实现了电话号码登录,感谢update@Zates