Android Studio接谷歌原生登录
@
前言
准备
近日,公司要求上线海外市场,需要接入海外SDK,首先上架的是GooglePlay,需要先接入GooglePlay登录,这里我们选择的接安卓原生,需要手机安装谷歌三件套,如果没有安装好的就去下载一个Go谷歌安装器,里面有一键安装。注:“手机必须搭梯子(这里不让说,否则审核不通过)”。
开始
刚开始肯定要先查阅文档,我为此翻阅了不少博文,但是好多文章都说的一知半解的,搞半天也没头绪(每个公司都有自己的项目,我们在原项目上开发,注定要多走些路子)。首先,你先确定你是接Google原生登录,还有一种是集成FireBase的(不知道说法对不对),这里只说前者,后者我也没做,等后面再说吧。
这里非常感谢一名在稀土掘金的叫Silence潇湘夜雨的大佬两句话就把我的活说明白啦。在这里我结合他的博文来做一下我工作的详细记录。
AndroidStudio
我们开发的项目先导出安卓,因为我们项目接过好几个渠道,所以比较乱一点,搞得我也很头痛,项目里也有分渠道打包,我看到不是很懂,只有以后再重新弄一下。
首先我们要先导入Google登录所要用到的库,在app下的build.gradle里面的的dependencies里配置一下Google服务
implementation 'com.google.android.gms:play-services-auth:16.0.0'
然后在最上面点击Sync Now (有问题可以降一个版本,比如开发文档说要用17.0.0我的项目就适配不了用的是16.0.0)
然后我们就可以在MainActivity里面开始写我们的代码了。
先声明一个 private GoogleSignInClient mGoogleSignInClient;
在onCreate()方法里写上
//TODO Google登录
//配置登录以请求用户的ID,电子邮件地址和基本配置文件.ID和基本配置文件包含在DEFAULT_SIGN_IN中.
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(Constants.GoogleAppID)
.build();
//使用gso指定的选项构建一个GoogleSignInClient.
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Constants.GoogleAppID里面配置的是server_client_id,(server_client_id怎么获取下面会说明)
Google登录肯定有按钮,用按钮事件调用googleLogin()方法
public void googleLogin() {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, 1000);
}
上面两行的代码是调起Google账号登录的界面
授权成功后肯定要回调,在onActivityResult()方法接收回调,这里面我写了两种方式,用哪一种都可以。这里handleSignInResult方法重载了一下,用一个就好。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1000) {
//方式一
// GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
// handleSignInResult(result);
//方式二
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
private void handleSignInResult(GoogleSignInResult result){
Constants.Log("handleSignInResult方法调用----" + result.isSuccess());
if (result.isSuccess()) {
GoogleSignInAccount account = result.getSignInAccount();
//account里可以直接获取到ID,name,和头像
Constants.Log( "id--------" + account.getId() + "----name----" + account.getDisplayName() + "---photo--" + account.getPhotoUrl());
String idToken = account.getIdToken();
Constants.Log("Token-----"+idToken+"-----");
}
}
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
//account里可以直接获取到ID,name,和头像
Constants.Log( "id--------" + account.getId() + "----name----" + account.getDisplayName() + "---photo--" + account.getPhotoUrl());
String idToken = account.getIdToken();
Constants.Log("Token-----"+idToken+"-----");
} catch (ApiException e) {
Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
Constants.Log("错误信息为"+e.toString());
}
}
这里面的Token值验证账号的时候会用的到。至于还要用到什么数据你就和后台沟通一下,直接传过去就好。
可见,接入谷歌登录还是很简单的,明白了流程,一会就弄好,个人感觉主要是不知道怎么弄API后台的设置
server_client_id

先弄一下OAuth同意屏幕的描述,按照你项目填写

再创建一下OAuth客户端id,其中

这个就是server_client_id,传入项目就可以啦。
如果有什么问题的话下方给我留言,我看到的话就会尽快回复的哦
现在没写完的,后面待写....................
Android Studio接谷歌原生登录的更多相关文章
- Android studio 开发一个用户登录界面
Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...
- 【原创】如何在Android Studio下调试原生安卓Framework层面的源代码
1. Open Existing Android Studio Project. 2. 打开后, Projects -> Android 里面是空的. 这时候,需要选到 Projects-> ...
- Android Studio—增删改查—登录功能
SQLite数据库的常用操作: create table if not exists 表名(字段1 类型(长度),字段2 类型(长度),...)// 建表 drop table if ex ...
- Android Studio原生库创建示例
[时间:2017-07] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发] 0 引言 最近在工作中遇到了升级A ...
- [Android 新特性] 谷歌发布Android Studio开发工具1.0正式版(组图) 2014-12-09 09:35:40
Android Studio是谷歌于13年I/O大会推出的Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的Androi ...
- 基于android studio的快捷开发(将持续更新)
对于Android studio作为谷歌公司的亲儿子,自然有它的好用的地方,特别是gradle方式和快捷提示方式真的很棒.下面是我在实际开发中一些比较喜欢用的快速开发快捷键,对于基本的那些就不多说了. ...
- Android开发学习之路-Android Studio开发小技巧
上一次发过了一个介绍Studio的,这里再发一个补充下. 我们都知道,Android Studio的功能是非常强大的,也是很智能的.如果有人告诉你学Android开发要用命令行,你可以告诉他Andro ...
- Android Studio的下载和安装教程(从ADT到AS)
之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...
- Android Studio 经常使用功能介绍
为了简化 Android 的开发力度,Google 决定将重点建设 Android Studio 工具.Google 会在今年年底停止支持其它集成开发环境.比方 Eclipse. Android St ...
随机推荐
- Vue入门教程 第三篇 (条件与循环)
v-if语法(条件) 符合条件时显示(渲染)某一元素. <div id="app"> <div v-if="ok"> <h1> ...
- 09-01 Tensorflow1基本使用
目录 Tensorflow基本使用 一.确认安装Tensorflow 二.获取MNIST数据集 三.使用Tensorflow训练--Softmax回归 四.使用Tensorflow训练--卷积神经网络 ...
- html5新媒体播放器标签video、audio 与embed、object
html5里的一些新的标签,看到里面object.embed.video.audio都可以添加视频或音频文件 embed是针对非IE的浏览器的媒体播放器 video是html5出的一种新标准,但并不是 ...
- POJ - 3646 The Dragon of Loowater
Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major problem. The shor ...
- C# 获取pdf长宽,反推pdf图纸类型
业务需求:读取pdf每页的长宽,然后根据国际标准,反推出pdf图纸类型 第一步:下载类库,并引入到项目中 链接:https://pan.baidu.com/s/1ud4-xhfDvi9OKolEBPw ...
- 由一次线上故障来理解下 TCP 三握、四挥 & Java 堆栈分析到源码的探秘
本文导读: 生产故障场景介绍 TCP 建连三次握手过程 TCP 断连四次挥手过程 结合 Java 堆栈剖析源码 再从堆栈中找到"罪魁祸首" 问题优化方案总结 1.生产故障场景介绍 ...
- Z-buffer算法
1.Z缓冲区(Z-Buffer)算法 1973年,犹他大学学生艾德·卡姆尔(Edwin Catmull)独 立开发出了能跟踪屏幕上每个像素深度的算法 Z-buffer Z-buffer让计算机生成复杂 ...
- Halcon一日一练:图像分割之基本概念
1.什么是图像分割: 图像分割就是把图像中特定的目标提出来,进行处理. 2.为什么要做图像分割: 图像分割是由图像处理到图像分析的关键步骤,准确的来说,没有图像分割,图像处理将无法实现其后续的操作.进 ...
- 玩转ArduinoJson库 V6版本
1.前言 前面,博主已经讲解了ArduinoJson库的V5版本.为了节省时间以及不讨论重复内容,博主建议读者先去阅读一下 玩转ArduinoJson库 V5版本 .重点了解几个东西: JSO ...
- gulp 自动化管理工具实现全过程
1.全局安装gulp npm install gulp -g 2.项目内安装gulp npm install gulp -s 3.项目根目录新建gulpfile.js js内代码: //载入gulp核 ...