Android登录 之GooglePlay登录

it2024-04-20  5

想法 : 写了好久代码了,但是都没有具体的总结下。总是用到的时候,再去翻看资料。一看就是一堆,到最后都不一定能管用。

近期做了一些项目,涉及到了登录授权。细回想下,自己接过的登录授权还真心不少。不同的授权都会一一列举,以后方便自己,也希望能够方便大家。

做开发的话,资源必不可少。 我们需要有Google 账户,拿到开发者权限,才能进行开发。

Google账户注册

自己去搞吧,就不多说了

但是在流程中会有一个google-services.json 的文件,要记得拷贝下来,放到工程目录下面

直接上代码

首先 确保我们的根目录的build.gradle文件添加了Google服务

allprojects { repositories { google() } } dependencies { classpath 'com.google.gms:google-services:4.3.4' }

根目录的build.gradle文件有Google服务之后,在我们项目目录下的build.gradle文件中添加

apply plugin: 'com.google.gms.google-services' dependencies { implementation 'com.google.android.gms:play-services-auth:18.1.0' }

在这里我推荐使用最新的版本,比较与时俱进不是

最新版本可以在官方文档之中获取,目前我使用的是18.1.0版本

依赖引入之后就可以在我们的登录页面进行登录操作的初始化了。

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build()

在进行GoogleSignInOptions初始化的时候建议传入

GoogleSignInOptions.DEFAULT_SIGN_IN

我们看一下源码

public static final GoogleSignInOptions DEFAULT_SIGN_IN = (new GoogleSignInOptions.Builder()).requestId().requestProfile().build();

也就是说,传入中国参数之后就相当于进行了下面的操作

val gso = GoogleSignInOptions.Builder() .requestId() .requestProfile() .build()

大家看到我的博客的时候可能已经看过其他人的了,接下来的流程可能有所不同

配置好google 登录参数之后,需要实现一下google客户端的配置

mGoogleApiClient = GoogleApiClient.Builder(this) .enableAutoManage(this) { } .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build()

到这里的话,基本上初始的配置就已经结束了。

接下来就是调用登录的步骤

<com.google.android.gms.common.SignInButton android:id="@+id/sb_google" android:layout_width="@dimen/x100" android:layout_height="@dimen/x100" android:background="@color/color_7b808e" android:onClick="@{(view)->context.logIn1()}" />

这个呢是Google提供的登录按钮,自带一个google的图标。写demo的时候可以直接使用。(自我感觉不好看,效果也不好改)

但是登录按钮是其次的,一开始我也差点没转过来。

布局随意写,根据UI写就好,不用在意的说一定要使用SignInButton按钮

布局绘制完成之后,添加一个点击事件

rf_google_paly_signin.setOnClickListener { googlePlaySignIn() }

我的工程呢是使用的androidX + kotlin的

点击按钮的时候调用googlePlaySignIn方法进行登录操作(这一步一定要翻墙)

private fun googlePlaySignIn() { val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient) startActivityForResult(intent, 0*100) }

因为,登录授权是在外部进行的操作,所以要获取到回调信息,需要到onActivityResult之中进行操作。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == 0*100) { var result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); handleGooglePlaySignInResult(result); } } private fun handleGooglePlaySignInResult(result: GoogleSignInResult) { try { if (result.isSuccess) { val account = result.signInAccount //登录成功,已取得数据 } }catch (e : ApiException) { } }

如果需要退出登录,可以使用

Auth.GoogleSignInApi.signOut(mGoogleApiClient)

由于开发的时候,国外账号申请困难,登录是由国外朋友进行操作的。 但是,google的授权登录是通畅的,至此,google 授权告一段落。

代码地址 : https://download.csdn.net/download/leiyaqiang/12996583 博客写完之后就写的demo,方便大家下载。 小东西,比较琐碎,二期必须要有注册过的包名,不太适合放到Git上面

最新回复(0)