Android渠道添加Google登录便于读取用户信息,也便于将应用发布到GooglePlay。 具体步骤如下,个人觉得仍是比较繁琐的,一步一步来看吧。

服务账号创立项目

developers.google.com/workspace/g…

Android应用添加谷歌登录(Google Sign In)
每个Google账号能够创立12个项目。

Android应用添加谷歌登录(Google Sign In)
点击创立。

创立凭证

Android应用添加谷歌登录(Google Sign In)

Android应用添加谷歌登录(Google Sign In)
这儿提示要先创立OAuth赞同屏幕。

Android应用添加谷歌登录(Google Sign In)
点击创立。

Android应用添加谷歌登录(Google Sign In)
带*的信息都是要填写的,邮箱就用当时这个就好。

回来创立OAuth客户端ID。

Android应用添加谷歌登录(Google Sign In)
选择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信息填入。

Android应用添加谷歌登录(Google Sign In)
然后下载配置信息JSON文件,后续代码会用到里面的信息。

代码编写

创立GoogleSignInClient

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登录

Intent intent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(intent, CODE_SIGN_IN);

登录的回调

@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);
}
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) {
        // 在这儿获取错误信息
    }
}

退出登录

mGoogleSignInClient.signOut().addOnCompleteListener(this, new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
    }
});

后续

你能够使用firebase做一些其他的事情,如埋点计算等。