Android Google SignIn结果为空

问题描述 投票:1回答:2

我正在整合谷歌登录Android,我希望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();

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");
            }

如果我尝试在“结果”上调用任何方法,那么我得到一个Null指针错误...

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

android google-authentication
2个回答
4
投票

解决了!

因此,经过6个小时的打破我的头,找到了问题。显然,当您使用SSH1创建config.json时,Google会自动创建与此项目关联的Web OAuth2密钥。我注意到谷歌创建了3个同名项目(一个用于firebase,一个用于Web,另一个用于不确定)

因此,抓住与同一个Android项目链接的Web客户端ID。哦谷歌!


0
投票

我在研究了这个问题后发现,发现结果是由于活动清单中的android:launchMode="singleInstance"而抛出空指针异常。

因此,请确保将launchmode更改为“singleTop”,或者不要为您的活动提供任何启动模式,例如:signinActivity;

© www.soinside.com 2019 - 2024. All rights reserved.