首先翻墙
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!