dependencies {
implementation 'com.google.android.gms:play-services-auth:19.0.0'
}
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(getString(R.string.google_web_client_id))
.build();
GoogleSignInClient mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
其中,R.string.google_web_client_id 为 Google 分配的 Web 应用程序客户端 ID。 3. 在需要实现登陆/注册的地方添加以下代码:
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
其中,RC_SIGN_IN 可以自定义请求编码。 4. 在 Activity 中添加 onActivityResult 方法,该方法用于处理 Google 登陆返回的结果:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
Task task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
private void handleSignInResult(Task completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
// Signed in successfully, show authenticated UI.
updateUI(account);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
// Please refer to the GoogleSignInStatusCodes class reference for more information.
Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
updateUI(null);
}
}
private void getRefreshToken(GoogleSignInAccount account) {
try {
String refreshToken = account.getRefreshToken();
Log.d(TAG, "Refresh Token: " + refreshToken);
} catch (NullPointerException e) {
Log.e(TAG, "Failed to get Refresh Token: " + e.getMessage());
}
}