呵呵!!!
听起来有点标题党,‘一气呵成’ 是有前提和准备的!
‘十年寒窗无人问 一举成名天下知’
你可知道他们背后的付出
这一起‘一气呵成’的前提是:Google 后台已配置好程序,包括签名、包名等!!!
Google 登录接入
开发者手册:https://developers.google.com/android?hl=zh-cn
-
Google 登录 2020年11月7日21:17:47
1、添加依赖,集成 SDK
小技巧:当你为找不到依赖而烦恼的时候,你只需要先填充第 2 步的代码到 Android studio 中,只有按照提示添加依赖,再 import 即可。
implementation 'com.google.android.gms:play-services-auth:18.1.0'2、根据文档编写代码
https://developers.google.com/identity/sign-in/android本人编写的代码:仅供参考 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FzvsynKZ-1604756291745)(file:///C:\Users\lifeng\AppData\Local\Temp\SGPicFaceTpBq\8484\07096C2F.png)]
/*** * Created by : 村长只会去森林打野 * Created on : <com.q1.overseas_library.manager.impl> * Created on : 2020 11 14:45 * * My motto : 我在皮皮虾凑数的日子 */ public class GlLoginManagerImpl implements LoginManager { private static final int RC_SIGN_IN = 8888; private GoogleSignInOptions mGoogleSignInOptions; private GoogleSignInClient mGoogleSignInClient; private LoginCallback mLoginCallback; private boolean isReady; public GlLoginManagerImpl() { Activity activity = MultiOverseasSDK.getInstance().getActivity(); if (activity == null) { isReady = false; return; } mGoogleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build(); mGoogleSignInClient = GoogleSignIn.getClient(activity, mGoogleSignInOptions); isReady = true; } @Override public void login(LoginCallback loginCallback) { if (isReady) { mLoginCallback = loginCallback; Intent signInIntent = mGoogleSignInClient.getSignInIntent(); Activity activity = MultiOverseasSDK.getInstance().getActivity(); activity.startActivityForResult(signInIntent, RC_SIGN_IN); } } @Override public void logout() { mGoogleSignInClient.signOut(); if (mLoginCallback != null) { mLoginCallback.onLogout(); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RC_SIGN_IN) { Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); handleSignInResult(task); } } private void handleSignInResult(Task<GoogleSignInAccount> completedTask) { GoogleSignInAccount account = null; try { account = completedTask.getResult(ApiException.class); if (mLoginCallback != null && account != null) { LoginCallbackResult result = new LoginCallbackResult.Builder() .token(account.getIdToken()) .email(account.getEmail()) .displayName(account.getDisplayName()) .build(); mLoginCallback.onSuccess(result); } } catch (ApiException e) { if (mLoginCallback != null && account != null) { mLoginCallback.onFailed("Google 登录错误码:" + account.getServerAuthCode()); } LogUtils.e("Google 登录错误,返回 account 为空"); } } }3、错误排查
- 返回错误码 10 :
排查方向: 1、调试程序使用的包名和上传到 Google 后台 apk 的包名是否一致。 2、调试程序使用的签名和 Google 后台 apk 的签名是否一致。< keystory 或者 jks 签名>- Google 登录没有任何响应:
排查方向: 1、留意 onActivityResult 这个方法有没有被调用。【例如第三方 activity 返回的数据需要调用 onActivityResult 接受数据】
本文介绍如何在Android应用中集成Google登录功能,包括添加依赖、编写代码及错误排查等内容。
9637

被折叠的 条评论
为什么被折叠?



