在 Android 上使用 Cognito 身份池通过 Google 登录

Zat*_*tes 5 android amazon-cognito google-signin aws-amplify

我正在尝试为我的 android 应用实现登录到谷歌。

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

我通过请求从谷歌获得令牌

    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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

一个谷歌成功认证,我调用以下方法:

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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Caused by: com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Token is not from a supported provider of this identity pool. (Service: AmazonCognitoIdentity; Status Code: 400; Error Code: NotAuthorizedException; Request ID: 98936aed-df1b-4849-bc03-9eb5edc364e8)

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

有没有我遗漏的东西,也许在 Cognito 用户池中?我能找到的所有教程都是针对托管 UI 的,是否 federatedSignIn() 不能用于谷歌登录?

谢谢!