我正在尝试使用以下说明将Google登录添加到我的应用中: https://developers.google.com/identity/sign-in/android/start-integrating
在我的signInActivity中,我在requestIdToken()上遇到空指针异常 在命令中
mSignInOpt = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.build();
当我在没有requestIdToken()的情况下使用此命令时,它正常工作,我在onActivityResult回调中获取用户名,电子邮件等,但令牌为空。
我确保我的网络控制台中的两个OAuth 2.0客户端ID与我在应用中使用的ID相匹配:
我还下载了google-services.json,新的更改并将其复制到我项目的“mobile”文件夹中。
我已尝试过以下链接中的所有答案,但没有解决我的问题。
请帮助!
链接:
答案 0 :(得分:3)
我明白了。
mSignInOpt = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.build();
不在OnCreate()
方法之内,这意味着mSignInOpt是该活动的全局成员,并且在创建活动时配置它。
由于某些原因,在这种情况下无法调用.requestIdToken(getString(R.string.default_web_client_id))
(没有requestIdToken()它可以正常工作)。
要修复错误,我将这几行代码移到了OnCreate()
方法中
现在它有效!
答案 1 :(得分:1)
抱歉,我没有足够的代表发表评论,但你可以做点什么吗
mSignInOpt = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
它给出了有效的回复?或者它根本不起作用?
我会尝试查看this以获得更多帮助。
答案 2 :(得分:0)
您在build.gradle中缺少此行 申请插件:'com.google.gms.google-services'
答案 3 :(得分:0)
googleSignInButton = findViewById(R.id.sign_in_button);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();