Android应用添加谷歌登录(Google Sign In)
Android平台添加Google登录便于读取用户信息,也便于将应用发布到GooglePlay。 具体步骤如下,个人觉得还是比较繁琐的,一步一步来看吧。
服务账号创建项目
https://developers.google.com/workspace/guides/create-credentials
每个Google账号可以创建12个项目。
点击创建。
创建凭据
这里提示要先创建OAuth同意屏幕。
点击创建。
带*的信息都是要填写的,邮箱就用当前这个就好。
回来创建OAuth客户端ID。
选择Android。
然后获取jks的SHA1指纹。debug.keystore的调试密钥库也行,密码是android。
keytool -keystore path-to-debug-or-production-keystore -list -v
path-to-debug-or-production-keystore换成你打包签名用的jks或debug.keystore的路径也行。然后将SHA1信息填入。
然后下载配置信息JSON文件,后续代码会用到里面的信息。
代码编写
创建GoogleSignInClient
java
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions
.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestId()
.requestProfile()
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions);
点击谷歌登录按钮跳转google登录
java
Intent intent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(intent, CODE_SIGN_IN);
登录的回调
java
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CODE_SIGN_IN && resultCode != 0) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
java
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
GgOrFbUserInfo ggOrFbUserInfo = new GgOrFbUserInfo();
ggOrFbUserInfo.setAvatar(account.getPhotoUrl() == null ? "": account.getPhotoUrl().toString());
ggOrFbUserInfo.setLtype(1);
ggOrFbUserInfo.setUserId(account.getId());
ggOrFbUserInfo.setEmail(account.getEmail());
ggOrFbUserInfo.setEmailVerified(1);
ggOrFbUserInfo.setName(account.getDisplayName());
ggOrFbUserInfo.setLanguage(CommonPramsUtil.getSystemLanguage());
ggOrFbUserInfo.setFamilyName(account.getFamilyName() == null ? "" : account.getFamilyName());
ggOrFbUserInfo.setGivenName(account.getGivenName());
ggOrFbUserInfo.setRegion("zn");
login(ggOrFbUserInfo); // 这里拿用户google账号的信息调用自己业务的login
if (account.getPhotoUrl() != null) {
Glide.with(LoginActivity.this).load(account.getPhotoUrl()).into(ivAvatar);
}
} catch (ApiException e) {
// 在这里获取错误信息
}
}
退出登录
java
mGoogleSignInClient.signOut().addOnCompleteListener(this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
}
});
后续
你可以使用firebase做一些其他的事情,如埋点统计等。
- Android性能优化之内存优化
- 区块链到底能不能落地,去中心化有没有必要
- Flutter开发 - 使用GetX框架实现类似MVVM架构
- Android电量优化,让你的手机续航更持久
- Android对Firebase崩溃日志和埋点分析的集成
- Android代码实现新年贺卡动画
- Android应用添加谷歌登录(Google Sign In)
- Android自定义View - DoraEmptyLayout
- 全新升级的AOP框架Dora.Interception[6]: 框架设计和实现原理
- 如何高效读写百万级的Excel?
- 红人姜Dora:从双非二本到顶级互联网大厂,一个普通人的升级打怪之路
- 头等仓:深度解析波卡生态 DAO 基础设施 Dora Factory
- 6年,12dora终渡B劫
- 6年,12dora终渡B劫