(出海必备)Android三方登录之Google登录
背景:之前一直做国内的项目,最近公司要做一款国外上架的app,因为海外和国内的文档,账号注册,demo测试等流程和国内大有不同,中间遇到了不少坑,在这里总结一下,有用到的小伙伴,可以借鉴下;
1.先撸官方文档
https://developers.google.com/identity/sign-in/android/sign-in
2.Google的Demo;
GitHub - googlesamples/google-services: A collection of quickstart samples demonstrating the Google APIs for Android and iOS
3.(1):注册Firebase账号 (https://console.firebase.google.com/)
(2):添加新应用
这里的json文件注意下载保存;
因为用到登录功能,SHA1还是需要的,
C:\Users\Alan>keytool -list -v -keystore <jks存放的路径>
SHA1填写的位置有那么几个,如果只是为了测试google登录,在刚才添加应用的那加上就可以了。如图这样:
但是在后面又遇到了坑, 由于需要google play上架,所以先提交了测试版,加入了测试账号,可以在商店下载,下载后发现google登录不了。于是,各种撸代码找坑。。。最终的原因是,Google Play当应用上传后,一是应用本身的SHA1(应用签名),二是Google Play会为应用重新生成一个SHA1(商店的签名); 所以最终的解决方案如下:
然后,打开Google应用凭据官网 (https://console.developers.google.com/apis/credentials),将两个签名分别添加进去,测试,商店下载的app可以正常三方登录了。
然后撸代码:
1. init初始化:
//google login setting
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestId().requestProfile().requestIdToken(getString(R.string.default_web_client_id)).requestEmail() //可以获取到邮箱信息【这一步还挺有必要,不光可以获取到邮箱信息,还会影响到下面获取性别信息】.build();
mGoogleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions);
R.String.default_web_client_id 客户端ID
2.点击登录
Intent intent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(intent, CODE_SIGN_IN);
3.注册回调
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == CODE_SIGN_IN && resultCode != 0) {Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);handleSignInResult(task);} else if(requestCode == CODE_SIGN_IN) {
// ToastUtils.showShort(getResources().getString(R.string.net_error));assert data != null;ToastUtils.showShort( data.toString() );}
}
4.登录成功数据回调
/*** Google登录成功返回数据* @param completedTask*/private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {try {GoogleSignInAccount account = completedTask.getResult(ApiException.class);// Signed in successfully, show authenticated UI.GgOrFbUserInfo ggOrFbUserInfo = new GgOrFbUserInfo();ggOrFbUserInfo.setAvatar(account.getPhotoUrl() == null ? "": account.getPhotoUrl().toString());ggOrFbUserInfo.setLtype(1);ggOrFbUserInfo.setUserId(account.getId());ggOrFbUserInfo.setEmail(account.getEmail());ggOrFbUserInfo.setEmailVerified(1);ggOrFbUserInfo.setName(account.getDisplayName());ggOrFbUserInfo.setLanguage(CommonPramsUtil.getSystemLanguage());ggOrFbUserInfo.setFamilyName(account.getFamilyName() == null ? "" : account.getFamilyName());ggOrFbUserInfo.setGivenName(account.getGivenName());ggOrFbUserInfo.setRegion("zn");login(ggOrFbUserInfo); //在这走自己后台接口if (account.getPhotoUrl() != null) {
// Glide.with(LoginActivity.this).load(account.getPhotoUrl()).into(imgHead);}Log.e(TAG, "account--------------->>>" + new Gson().toJson(account));} catch (ApiException e) {// The ApiException status code indicates the detailed failure reason.// Please refer to the GoogleSignInStatusCodes class reference for more information.
// failedCode.setText("获取登录信息失败" + e.getMessage());Log.e(TAG, "signInResult:failed code=" + e.getStatusCode());ToastUtils.showShort(e.getMessage());}}
5.退出登录
mGoogleSignInClient.signOut().addOnCompleteListener(this, new OnCompleteListener<Void>() {@Overridepublic void onComplete(@NonNull Task<Void> task) {Log.d(TAG, "signOut: -----------------------------");// ...登出的逻辑}});
------------------以上就是Google登录和登出的所有步骤了-----------------------
(出海必备)Android三方登录之Google登录相关推荐
- Android三方登录之google登录
在做公司的一个国外项目的时候,需要用到google的三方快捷登录,中间碰到了一些坑,在此Mark一下,如果有同样的问题的小伙伴看到可以少走些弯路,给自己也总结下开发过程. 点击进入谷歌的官方文 ...
- Android 应用程序集成Google 登录及二次封装
谷歌登录API: https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...
- 在Android App中集成Google登录
技术文章 来源:码农网 发布:2016-09-19 浏览:194 摘要:今天,几乎所有的web和移动app都自带谷歌和Facebook登录,这对app开发者和用户来说是一个非常有用的功能,因为几乎每个 ...
- 前端学习——第三方登录(Google登录、Facebook登录)
文章目录 前言 一.前端对接第三方登录有什么用? 二.使用环境 三.FB第三方登录 引入且封装成组件 四.G第三方登录 引入且封装成组件 五.页面上使用 总结 前言 本文介绍了作者本人学习前端Java ...
- Android 集成 google 登录并获取 性别等隐私信息
前言 公司做海外产品的,集成的是 google 账号登录,账号信息.邮箱等这些不涉及隐私的按 google 的正常登录流程可以轻松实现 .但是一旦需要获取涉及隐私的信息就比较麻烦,文档也不是十分清晰, ...
- (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇
最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...
- android google 登录登出接入
官方地址 https://developers.google.com/identity/sign-in/android/sign-in 登录 集成google库 dependencies { i ...
- Android Google登录接入
一.接入准备 手机必须有Google套件 Google服务框架,Google Play商店,Google Play服务(使用su谷歌安装器下载安装) 手机必须可以翻墙 google开发者账号 二.官网 ...
- Android应用添加谷歌登录(Google Sign In)
Android平台添加Google登录便于读取用户信息,也便于将应用发布到GooglePlay. 具体步骤如下,个人觉得还是比较繁琐的,一步一步来看吧. 服务账号创建项目 developers.goo ...
最新文章
- 12本最优秀的Android开发电子书强力推荐
- C语言字符数组与字符串的使用及加结束符‘\0‘的问题
- 我爱我家 CIO 刘东颖:如何靠六大维度提升“数字化”能力?|鲸犀峰会
- AI算法工程师必备技术,快快积累!
- linux开发工具之gcc
- linux oracle swd.oui,centos7安装oracle11g报错,请问怎么解?
- 服务器证书在注册表上位置,服务器ssl证书注册表
- 千兆交换机下面可以接多少层交换机_视频监控系统如何选择网络交换机
- 设计模式--中介者模式(Mediator)
- Eigen教程(2)之Matrix,Vectors, Dynamic介绍
- python代码混淆
- 纠错码较副本优势与minio纠错码配置
- 如果你的开发板上STM32采用外部晶振,那么就不能选择BYPASS Clock Source (旁路时钟源)模式,否则STM32将会工作不正常。
- no python interpreter selected_报No Python interpreter selected错误怎么办
- 利用Tensorflow构建RNN并对序列数据进行建模
- 算法题-----题目、题解、个人算法、个人思考
- iphone 3.1.2开发环境搭建——linux平台
- 高德SD地图数据生产自动化技术的路线与实践(道路篇)
- 7-1 求e的近似值 (15 分)
- 汽车类稿件撰写:介绍一款汽车的稿子怎么写?
热门文章
- 拼多多店铺怎么做咨询
- SQL难学吗,有什么好的学习建议?
- x是偶数的c语言表达式,【单选题】能表示x 为偶数的表达式是
A. x%2==0
B. x%2==1
C. x-. x%2!=0...
- 请教switch内部的变量定义问题?
- HTML5面试题目汇总(一)
- 超级实用——用word与谷歌翻译将英文PDF文档翻译成中文,免费无限制
- distinct , in 的用法
- 【语音智能平台】京东Alpha VS 讯飞开放平台 (一)
- Ubuntu Kylin系统中配置Apache服务器
- C语言-实现栈(stack)