Android集成google登录
1.在项目的build.gradle中添加以下库
allprojects {
repositories {
google()
// 4.1以下的gradle,用下面的代替 google()
// maven {
// url 'https://maven.google.com'
// }
}
}
2.在app下的build.gradle添加以下依赖
dependencies {
implementation 'com.google.android.gms:play-services-auth:20.2.0'
}
3.在google api 控制台申请参数时需要填写 包名 和签名文件的 SHA1 (此步骤一般由产品完成,我们只需提供相应的参数就ok)
//获取SHA1的命令,keytool在jdk安装路径下,配置了jdk环境变量的可以直接是cmd下使用
keytool -list -keystore 你的签名文件的全路径 -v
4.接入代码----登录
- 调用授权
GoogleSignInOptions gso = new GoogleSignInOptions
.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)//获取用户的基本信息
.requestEmail()//获取邮箱
.build();
GoogleSignInClient client = GoogleSignIn.getClient(this, gso);//创建 GoogleSignInClient 对象
Intent signInIntent = client.getSignInIntent();
startActivityForResult(signInIntent, 5000);//开始请求授权,请求码自己定
- 结果返回处理(在 onActivityResult 当中)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 5000) {//请求google登录的返回
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
//登录成功获取用户信息
System.out.println(account.getId());
System.out.println(account.getEmail());
} catch (ApiException e) {
//登录失败
Log.w("TAG", "signInResult:failed code=" + e.getStatusCode());
}
}
- 此外还提供了用户是否已经登录了(可以在调用上述授权方法之前调用此方法判断是否需要重新授权)
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
if (account != null){
System.out.println("用户已登录");
}
5.接入代码-----登出
client.signOut()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){}
}
});
6.断开连接-----可选接入
client.revokeAccess()
.addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});

浙公网安备 33010602011771号