一、接入准备

  1. 手机必须有Google套件
    Google服务框架,Google Play商店,Google Play服务(使用su谷歌安装器下载安装)
  2. 手机必须可以翻墙
  3. google开发者账号

二、官网文档

https://developers.google.com/identity/sign-in/android/start-integrating?hl=zh-cn

三、接入步骤

  1. 依赖google play服务
implementation 'com.google.android.gms:play-services-auth:20.2.0'
  1. 配置 Google API 控制台项目

    需要使用google开发者账号,创建项目,在项目中根据包名和SHA1值创建应用。

    控制台: https://console.cloud.google.com/apis/credentials?hl=zh-cn

  2. 代码

    3.1 获取GoogleSignInClient 对象

    private final String TAG = getClass().getSimpleName();/*** google登录客户端对象*/private GoogleSignInClient mGoogleSignInClient;
    private void initGoogleSignInClient() {// Configure sign-in to request the user's ID, email address, and basic// profile. ID and basic profile are included in DEFAULT_SIGN_IN.GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)//请求邮箱.requestEmail()//请求id token(web client id).requestIdToken("660809532020-g7r2qsmjkjv0ttmje013otrb97s0qtil.apps.googleusercontent.com").build();// Build a GoogleSignInClient with the options specified by gso.mGoogleSignInClient = GoogleSignIn.getClient(this, gso);}

3.2 登录

/*** google登录*/private void login() {//使用GoogleSignIn.getLastSignedInAccount方法为当前登录的用户请求个人资料信息。GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);//不存在则请求登录if (account == null) {Intent signInIntent = mGoogleSignInClient.getSignInIntent();mActivityLauncher.launch(signInIntent);} else {showAccount(account);}}private final ActivityResultLauncher<Intent> mActivityLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {if (result.getResultCode() == RESULT_OK) {//回调成功Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(result.getData());handleSignInResult(task);}});/*** 处理数据** @param completedTask*/private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {try {GoogleSignInAccount account = completedTask.getResult(ApiException.class);// Signed in successfully, show authenticated UI.showAccount(account);} catch (ApiException e) {// The ApiException status code indicates the detailed failure reason.// Please refer to the GoogleSignInStatusCodes class reference for more information.Log.e(TAG, "signInResult:failed code=" + e.getStatusCode());Log.e(TAG, "signInResult:failed msg=" + e.getStatusMessage());}}/*** 展示账户信息** @param account*/private void showAccount(GoogleSignInAccount account) {Log.e(TAG, "signInResult:success name:" + account.getDisplayName());Log.e(TAG, "signInResult:success id:" + account.getId());Log.e(TAG, "signInResult:success email:" + account.getEmail());Log.e(TAG, "signInResult:success token:" + account.getIdToken());
}

3.3 登出

/*** 登出*/private void logout() {mGoogleSignInClient.signOut().addOnCompleteListener(this, new OnCompleteListener<Void>() {@Overridepublic void onComplete(@NonNull Task<Void> task) {Log.e(TAG, "退出登录");}});}

3.4 断开账户

/*** 断开账户,撤销访问(如果用户删除其帐户,则必须删除您的应用程序从Google API获取的信息)。*/private void revokeAccess() {mGoogleSignInClient.revokeAccess().addOnCompleteListener(this, new OnCompleteListener<Void>() {@Overridepublic void onComplete(@NonNull Task<Void> task) {Log.e(TAG, "断开账户");}});}

Android Google登录接入相关推荐

  1. Google登录接入

    本文章仅作为个人笔记 Google登录官网 Google登录官方快速入门文档 GoogleApi控制台 Google登录接入前提: 开发者: 拥有google开发者账号 添加必要jar包 implem ...

  2. android google 登录登出接入

    官方地址 https://developers.google.com/identity/sign-in/android/sign-in 登录 集成google库 dependencies {    i ...

  3. android google 登录流程及遇到的坑

    最近在做Facebook 和google第三方登录,Facebook一气呵成,看着官方文档一步一步走,几乎没啥问题 Facebook登录 文档地址 https://developers.faceboo ...

  4. Android Google地图接入(一)

    最近项目中需要接入Google地图,遇到很多问题,现在记录下来,供以后参考. 1. 登录Google API Console,注册Android API密钥(需要翻墙 ~_~) 得到API KEY: ...

  5. Android QQ 登录接入详细介绍

    /   今日科技快讯   / 近日,百度地图发布2022春节出行大数据.迁徙大数据显示,2022年春运迁徙规模较去年农历同期有明显上升.春节期间全国人口迁徙规模日均值为去年农历同期的近两倍.春节前的迁 ...

  6. Android FaceBook登录接入--散列密钥获取

    官方提供的方法如下: /*** 根据签名文件获取散列密钥* 注意: 如果debug和release签名文件不一致,需要重新生成配置到Facebook*/public static String get ...

  7. Android Google地图接入(二)

    前面完成了地图的显示,现在想要获取位置数据,需要使用到另一个API:Google Play services Location API. 接收位置更新基本流程: 1. 连接LocationServic ...

  8. Unity接入Google登录

    Unity接入Google登录 接入FireBaseSdk和GoogleSignIn插件 FireBase接入文档 GoogleSignIn 编写登录代码 可能出现的问题 运行时弹出Google登录界 ...

  9. (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇

    最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...

最新文章

  1. 软件工程个人作业01
  2. 使用SVD求取矩阵的伪逆
  3. Chapter 3 Phenomenon——24
  4. ubuntu下wget下载Linux内核源码、make生成.config文件
  5. 两个Fragment之间如何传递数据
  6. 技术贴]强大的DELPHI RTTI–兼谈需要了解多种开发语言
  7. 03.full_text interval查询
  8. 《MySQL——备库多线程复制策略。》
  9. web前端开发工程师必会的5种网页布局方法?
  10. 计算机网络学习笔记(27. Email应用概述)
  11. Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205
  12. Java编程思想学习录(连载之:初始化与清理)
  13. 软件工程期末考试复习(二)
  14. api.execScript
  15. Oracle GoldenGate Director安装配置详细手册
  16. CHIP下游分析(仅ChIPseeker包)
  17. 信号处理:时域和频域的关系
  18. java新手抖机灵(java新手技巧)
  19. 资源共享——FTP服务
  20. Unable to start embedded Tomcat 解决方式(已解决)

热门文章

  1. 1036. 跟奥巴马一起编程(15)
  2. 计算机专业如何晋级正高级,已有软考高级证书如何获得正高级职称?
  3. 云计算基础与应用 第八章 云安全
  4. 网页使用百度地图后,只显示灰色框框(已解决)
  5. java集合set不能去重_java集合去重和排序
  6. htons() ntohl() ntohs() htons()的区别及详解
  7. Solving environment: failed ResolvePackageNotFound: - ld_impl_linux-64==2.34=h53a641e_4
  8. 应用层协议的捕获和解析
  9. c# WPF中System.Windows.Interactivity的使用
  10. 分享下在国内发售的全系列联想小新平板的型号和对应的海外版