在Android上,Google登录可以通过使用GoogleSignInClient
和GoogleSignInOptions
来实现。在没有重定向URI的情况下,可以使用“服务器端验证”。以下是一个示例代码,演示了如何在Android上使用Google登录:
build.gradle
文件中添加Google登录的依赖项:implementation 'com.google.android.gms:play-services-auth:19.0.0'
GoogleSignInClient
对象:private GoogleSignInClient mGoogleSignInClient;
// 在onCreate()方法中初始化GoogleSignInClient对象
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
signIn()
方法:private static final int RC_SIGN_IN = 123;
private void signIn() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);
}
onActivityResult()
方法中获取用户信息:@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
Task task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
private void handleSignInResult(Task completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
// 登录成功,可以获取用户的信息
String displayName = account.getDisplayName();
String email = account.getEmail();
String photoUrl = account.getPhotoUrl().toString();
// 可以将这些信息用于你的应用逻辑
} catch (ApiException e) {
// 登录失败,可以根据错误码处理错误情况
Log.e(TAG, "signInResult:failed code=" + e.getStatusCode());
}
}
以上代码演示了如何在Android上使用Google登录。在没有重定向URI的情况下,可以使用服务器端验证,通过GoogleSignIn.getSignedInAccountFromIntent(data)
获取用户信息。