Android Google登录结果为空

hel*_*tyj 1 android google-authentication

我正在集成适用于Android的Google登录,并且希望返回id_token以便可以通过服务器进行身份验证。我按照https://developers.google.com/identity/sign-in/android/backend-auth中的所有步骤进行操作

如果我只是要求,requestEmail()那么我将取回个人资料信息,但是如果我添加的.requestIdToken(getString(R.string.server_client_id))话,result.isSuccess()则为假,并且我没有取回任何帐户信息。有任何想法吗?

        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(getString(R.string.server_client_id))
            .build();
Run Code Online (Sandbox Code Playgroud)

onActivityResult:

            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
            if (result.isSuccess()) {
                    GoogleSignInAccount acct = result.getSignInAccount();
                    String idToken = acct.getIdToken();
                    mIdTokenTextView.setText("ID Token: " + idToken);
                    // TODO(user): send token to server and validate server-side
            } else {
                    mIdTokenTextView.setText("ID Token: null");
            }
Run Code Online (Sandbox Code Playgroud)

如果我尝试在“结果”上调用任何方法,则会收到Null指针错误...

java.lang.RuntimeException:无法将结果ResultInfo {who = null,request = 9001,result = 0,data = Intent {(has extras)}}传递给活动{com.test.LoginActivity}:java.lang.NullPointerException

hel*_*tyj 7

解决了!

因此,经过6个小时的努力,我发现了问题所在。显然,当您使用SSH1创建config.json时,Google会自动创建与此项目关联的Web OAuth2密钥。我注意到的是Google创建了三个名称相同的项目(一个用于Firebase,一个用于Web,另一个不确定)

因此,请获取与同一Android项目链接的Web客户端ID。哦,谷歌!