Android Studio的谷歌原生登录

前言

准备

近日,公司要求上线海外市场,需要接入海外SDK,首先上架的是GooglePlay,需要先接入GooglePlay登录,这里我们选择的接安卓原生,需要手机安装谷歌三件套,如果没有安装好的就去下载一个Go谷歌安装器,里面有一键安装。注:“手机必须搭梯子(这里不让明着说,否则博文审核不通过)”。

开始

刚开始肯定要先查阅文档,我为此翻阅了不少博文,但是好多文章都说的一知半解的,搞半天也没头绪(每个公司都有自己的项目,我们在原项目上开发,注定要多走些路子)。首先,你先确定你是接Google原生登录,还有一种是集成FireBase的(不知道说法对不对),这里只说前者,后者我也没做,等后面再说吧。
这里非常感谢一名在稀土掘金的叫Silence潇湘夜雨的大佬两句话就把我的活说明白啦。在这里我结合他的博文来做一下我工作的详细记录。

AndroidStudio

我们开发的项目先导出安卓,因为我们项目接过好几个渠道,所以比较乱一点,搞得我也很头痛,项目里也有分渠道打包,我看到不是很懂,只有以后再重新弄一下。
首先我们要先导入Google登录所要用到的库,在app下的build.gradle里面的的dependencies里配置一下Google服务

implementation 'com.google.android.gms:play-services-auth:16.0.0'

然后在最上面点击Sync Now (有问题可以降一个版本,比如开发文档说要用17.0.0我的项目就适配不了用的是16.0.0)

然后我们就可以在MainActivity里面开始写我们的代码了。
先声明一个 private GoogleSignInClient mGoogleSignInClient;
在onCreate()方法里写上

 //TODO Google登录
 //配置登录以请求用户的ID,电子邮件地址和基本配置文件.ID和基本配置文件包含在DEFAULT_SIGN_IN中.
  GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
           .requestEmail()
           .requestIdToken(Constants.GoogleAppID)
           .build();
 //使用gso指定的选项构建一个GoogleSignInClient.
 mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Constants.GoogleAppID里面配置的是server_client_id,(server_client_id怎么获取下面会说明)
Google登录肯定有按钮,用按钮事件调用googleLogin()方法

 public void googleLogin() {
        Intent signInIntent = mGoogleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, 1000);
    }

上面两行的代码是调起Google账号登录的界面

授权成功后肯定要回调,在onActivityResult()方法接收回调,这里面我写了两种方式,用哪一种都可以。这里handleSignInResult方法重载了一下,用一个就好。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		 if (requestCode == 1000) {
            //方式一
//            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
//            handleSignInResult(result);
            //方式二
            Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
            handleSignInResult(task);
        }
}
 private void handleSignInResult(GoogleSignInResult result){
        Constants.Log("handleSignInResult方法调用----" + result.isSuccess());

        if (result.isSuccess()) {
            GoogleSignInAccount account = result.getSignInAccount();
            //account里可以直接获取到ID,name,和头像
            Constants.Log( "id--------" + account.getId() + "----name----" + account.getDisplayName() + "---photo--" + account.getPhotoUrl());
            String idToken = account.getIdToken();
            
           Constants.Log("Token-----"+idToken+"-----");
        }
    }
    private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
        try {
            GoogleSignInAccount account = completedTask.getResult(ApiException.class);
            //account里可以直接获取到ID,name,和头像
             Constants.Log( "id--------" + account.getId() + "----name----" + account.getDisplayName() + "---photo--" + account.getPhotoUrl());
            String idToken = account.getIdToken();

            Constants.Log("Token-----"+idToken+"-----");
            
        } catch (ApiException e) {
            Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
            Constants.Log("错误信息为"+e.toString());
        }
    }

这里面的Token值验证账号的时候会用的到。至于还要用到什么数据你就和后台沟通一下,直接传过去就好。

可见,接入谷歌登录还是很简单的,明白了流程,一会就弄好,个人感觉主要是不知道怎么弄API后台的设置

server_client_id


先弄一下OAuth同意屏幕的描述,按照你项目填写
创建凭据
再创建一下OAuth客户端id,其中
server_client_id
这个就是server_client_id,传入项目就可以啦。

如果有什么问题的话下方给我留言,我看到的话就会尽快回复的哦
现在没写完的,后面待写…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗夜—心~殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值