使用Google Auth登录并获取个人资料详情。
但面临一个问题。如果用户第一次验证sdk将有助于添加新帐户,一旦成功,它将在onActivityResult
上收回回复
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
acct.getGivenName()
和acct.getFamilyName()
为null
。
但如果我使用已添加的帐户进行身份验证,则acct.getGivenName()
和acct.getFamilyName()
都会有预期值。
我的代码如下
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestId()
.requestProfile()
.build();
GoogleApiClient googleApiClient = new GoogleApiClient.Builder(mActivity)
.enableAutoManage(mActivity, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(signInIntent, REQUEST_CODE_GOOGLE_SIGN_IN);
答案 0 :(得分:0)
我在相同的问题上挣扎了几个小时而没有在互联网上找到任何回复。 在经过大量盲目猜测而没有结果之后,我偶然发现了一个似乎可以解决问题的方法:
我在开发者控制台中创建了一个“Web应用程序”OAuth 2.0客户端ID,并在初始化GoogleSignInOptions项目时传递了它,如下所示:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(%Your Web application ID here%)
.requestServerAuthCode(%Your Web application ID here%)
.requestId()
.requestEmail()
.requestProfile()
.build();
从那以后,似乎工作得很好。