@

前言

准备

近日,公司要求上线海外市场,需要接入海外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接谷歌原生登录的更多相关文章

  1. Android studio 开发一个用户登录界面

    Android studio 开发一个用户登录界面 activity_main.xml <?xml version="1.0" encoding="utf-8&qu ...

  2. 【原创】如何在Android Studio下调试原生安卓Framework层面的源代码

    1. Open Existing Android Studio Project. 2. 打开后, Projects -> Android 里面是空的. 这时候,需要选到 Projects-> ...

  3. Android Studio—增删改查—登录功能

    SQLite数据库的常用操作: create table if not exists 表名(字段1 类型(长度),字段2 类型(长度),...)//       建表 drop table if ex ...

  4. Android Studio原生库创建示例

    [时间:2017-07] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发] 0 引言 最近在工作中遇到了升级A ...

  5. [Android 新特性] 谷歌发布Android Studio开发工具1.0正式版(组图) 2014-12-09 09:35:40

    Android Studio是谷歌于13年I/O大会推出的Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的Androi ...

  6. 基于android studio的快捷开发(将持续更新)

    对于Android studio作为谷歌公司的亲儿子,自然有它的好用的地方,特别是gradle方式和快捷提示方式真的很棒.下面是我在实际开发中一些比较喜欢用的快速开发快捷键,对于基本的那些就不多说了. ...

  7. Android开发学习之路-Android Studio开发小技巧

    上一次发过了一个介绍Studio的,这里再发一个补充下. 我们都知道,Android Studio的功能是非常强大的,也是很智能的.如果有人告诉你学Android开发要用命令行,你可以告诉他Andro ...

  8. Android Studio的下载和安装教程(从ADT到AS)

    之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...

  9. Android Studio 经常使用功能介绍

    为了简化 Android 的开发力度,Google 决定将重点建设 Android Studio 工具.Google 会在今年年底停止支持其它集成开发环境.比方 Eclipse. Android St ...

随机推荐

  1. dp复习 背包[礼物]

    [问题描述]人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想知道当他花一定钱数后剩余钱数无法再购买任何一件剩 ...

  2. SEER区块浏览器开发指南

    区块浏览器基本功能 区块链浏览器是浏览区块链信息的主要窗口,每一个区块所记载的内容都可以从区块链浏览器上进行查阅.用户可以使用区块链浏览器查询记录在区块中的交易信息,包括转账.预测.账户管理和社区治理 ...

  3. Flash安全总结

    ActionScript AS是基于ECMAScript的语言,为了交互的需要flash应用引入ActionScript.ActionScript一共有三个版本,其中3.0较之前两个版本变化很大.Ac ...

  4. oracle初级系列教程

    https://www.cnblogs.com/linjiqin/category/349944.html

  5. Spring Boot项目中如何定制HTTP消息转换器

    在构建RESTful数据服务过程中,我们定义了controller.repositories,并用一些注解修饰它们,但是到现在为止我们还没执行过对象的转换--将java实体对象转换成HTTP的数据输出 ...

  6. Flink Connector 深度解析

    作者介绍:董亭亭,快手大数据架构实时计算引擎团队负责人.目前负责 Flink 引擎在快手内的研发.应用以及周边子系统建设.2013 年毕业于大连理工大学,曾就职于奇虎 360.58 集团.主要研究领域 ...

  7. Linux下yum与apt-get

    linux系统基本上分两大类: 1.RedHat系列:Redhat.Centos.Fedora等 2.Debian系列:Debian.Ubuntu等 RedHat 系列 1 常见的安装包格式 rpm包 ...

  8. 二叉树的查找(前序、中序、后序、层序遍历)--biaobiao88

    建立一棵含有n个结点的二叉树,采用二叉链表存储: 输出前序.中序.后序..层序遍历该二叉树的遍历结果. 定义二叉树的数据类型——二叉树结点结构体BiNode.建立二叉链表可以采用扩展二叉树的一个遍历序 ...

  9. 基于Groovy搭建Ngrinder脚本调试环境

    介绍 最近公司搭建了一套压力测试平台,引用的是开源的项目 Ngrinder,做了二次开发,在脚本管理方面,去掉官方的SVN,引用的是Git,其他就是做了熔断处理等. 对技术一向充满热情的我,必须先来拥 ...

  10. The usage of Markdown---引用

    目录 1. 序言 2. 引用与嵌套引用 3. 列表中的引用 更新时间:209.09.14 1. 序言   在本篇,我们来仔细谈一下Markdown的引用. 2. 引用与嵌套引用   在Markdown ...