Android海外第三方登入之Google

首先翻墙

google官方文档 https://developers.google.com/identity/sign-in/android/sign-in

1.通过以上文档获取应用的OAuth Client Id(android类型的)并将其下载JSON文件放入app下面(与src平级, 应用名/app/client_secret.json)

2.再创建一个网页类型的OAuth Client Id(后面初始化需要) 将其放在string文件下

<string name="server_web_client_id">此处填写网页类型的OAuth Client Id</string>

3.build文件添加依赖  

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

4.开始写代码(某个点击登入按钮实现逻辑)

//初始化
GoogleSignInOptions gso =new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()//获取emial
            .requestServerAuthCode(AppUtils.getString(R.string.server_web_client_id))//注意,此处用的webclientid
                .build();

//创建 GoogleSignInClient 
GoogleSignInClient mGoogleClient =  GoogleSignIn.getClient(context,gso);
//执行跳转操作
Intent signInIntent = mGoogleClient.getSignInIntent();
activity.startActivityForResult(signInIntent, Tag.GOOGLE_INTENT_REQUESTCODE);//Tag随意指定

5.通过 onActivityResult 获取回调的结果

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //登入成功结果返回
    Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            GoogleSignInAccount account = task.getResult(ApiException.class);
            //通过account 获取个人信息
            ...
            //一般登入流程,客户端获取到authCode在将authCode传给服务器,服务器在通过authCode获取详            
            // 细的信息
            String authCode = acct.getServerAuthCode()
            
        } catch (ApiException e) {
            e.printStackTrace();
            //注意如果返回错误码:12500可能是GooglePLay服务版本太旧,请到google商店更新最新版本
        }

}
 

6.需要登出的话

mGoogleClient.signOut();

 

 

Over!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值