您可以通过两种方式进行身份验证,以获取GoogleSignInResult
。
i) 通过在 Google 登录屏幕中输入电子邮件 ID 和密码。
ii) 通过从手机中已登录的帐户中选择帐户。
我已使用第二种方法来获取访问令牌并验证用户。
有关更多支持参考链接,请参见以下链接。
Google 登录链接 1
Stackoverflow - 令牌刷新
Google 认证提供程序文档
服务器端令牌验证文档
如果您的唯一目标是获取令牌,因此您也可以尝试此 GitHub 源。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
//使用登录选项来构建 API 客户端实例。
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this , this )
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent,RC_SIGN_IN); }
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN){
GoogleSignInResult result =Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
private void handleSignInResult(GoogleSignInResult result) {
Log.d(TAG, "handleSignInResult:" + result.isSuccess());
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
} else {
}
}
// 进行身份验证
AuthCredential credential =
GoogleAuthProvider.getCredential(acct.getIdToken(), null);
FirebaseAuth.getInstance().getCurrentUser().reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
}
credential.refreshToken();
accessToken = credential.getAccessToken();