Google 的账号自动登录功能主要依靠x-auto-login这个http头部字段来触发的。

X-auto-login是google私有的一个头部字段,在android自带浏览器和chrome中存在对这个http字段的处理。

一、服务端在何时会返回X-Auto-Login

在PC端使用任何浏览器(IE,chrome)访问google账号登录页面时,服务端都会返回带有X-Auto-Login字段的HTTP Response

在手机端访问google账号登录页面与PC端相同;在未登录google首页下,使用chrome-APK访问google首页时会多返回一个mobilesignin页面,这个页面包含了X-Auto-Login字段,如果在chrome中登录了同步账号,并且允许自动登录时就会弹出自动登入提示窗口;在未登录google首页下,使用android 4.0以上设备访问google首页会直接返回带有X-Auto-Login字段的HTTP Response。

X-Auto-Login:

realm=com.google&account=zzjjob%40gmail.com&args=continue%3Dhttp%253A%252F%252Fwww.google.com.hk%252F

X-Auto-Login 中包含三部分内容:

Realm : 在AccountManager中查找账号时使用的type

Account :当服务器侦测到有账号已经登录时,会在这里包含已经登录的账号

侦测账号是否登录是依靠cookie来实现的,在登录谷歌账号时会创建一个cookie,在下次登录时就会拿这个cookie给到服务端,服务端验证已经有账号登录时会在Account中包含用户名;在登出谷歌账号时,会将此cookie删除。

在线状态,访问登录页面的表现为:

移动设备登入同步账号后,Chrome-APK,android自带浏览器还会弹出自动登录窗口

离线状态,访问登录页面的表现:

有自动填充的会自动填充,没有的就不会

Args :想要得到认证的页面

二、手机上chrome与自带浏览的自动登录的实现

以下是android 4.1.1_r1.1中自带浏览器的实现逻辑

1、在主Frame的主资源加载完成后会检查是否包含X-Auto-Login字段,如果包含的话,就会触发自动登入

2、解析出X-Auto-Login的 realm、account、args

3、在设备中查找已经登入的账号中是否存在 account

4、如果存在 account 账号,使用AccountManager 获取认证令牌( auth token )

5、如果第4步中没有找到 account 账号,列出所有的账号在登录提示窗口中

6、选中一个账号以后,使用AccountManager获取认证令牌( auth token )

7、认证完成后,调用WebView加载

String result = value.getResult().getString(

AccountManager.KEY_AUTHTOKEN);

加载的页面为account.google.com,进行登录

8、登录完成,跳转回最初的页面

三、使用AccountManager的好处

AccountManager 集中式的管理了不同的账号和身份认证,它能够方便的授权给第三方程序去访问在线资源。许多服务器支持认证令牌(auth token)的概念,令牌用来发送用户的实际密码进行身份认证,第三方的程序使用AccountManager去获取身份认证的好处就是可以不用直接接触密码,AccountManager会生成令牌,然后帮助第三方程序去完成身份认证。

Android 自带浏览器谷歌账号自动登录的实现相关推荐

  1. 如何保证同一个账号同时只能在一个设备登录,账号自动登录

    相信很多人在移动开发中都会遇到这样的需求,当手机端的一个账号已经登录的情况下,限制这个账号在另一个设备上同时登录:账号自动登录.其实要做到这个的方法有很多,在这里我说下目前使用最多的一种方法: 在开发 ...

  2. 爬虫三(Bs4搜索、Selenium基本使用、无界面浏览器、Selenium自动登录百度案例、自动获取12306登录验证码案例、切换选项卡、浏览器前进后退、登录Cnblogs获取Cookie自动点赞)

    文章标题 一.Bs4搜索文档树 二.CSS选择器 三.selenium基本使用 四.无界面浏览器 五.selenium其他使用 1)自动登录百度案例 2)获取位置属性大小.文本 3)自动获取12306 ...

  3. Windows10系统设置开机账号自动登录的根本解决方法

    windows10系统安装后,每次开机登录时默认都需要用户输入密码 因为Windows10电脑又称为PC个人电脑,主要是个人使用,对于比较安全的电脑使用环境,比如家庭等,这是完全没有必要的 每次输入都 ...

  4. 关于android自带浏览器无法下载站点apk最终解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 描述:站点提供下载apk连接地址,为aspx页面,通过二进制流的方式下载:用android自带browser点击页面无反应,不 ...

  5. Android 实现网页账号自动登录

    我们希望实现这样的一个场景,当前账号已经在手机系统登录,然后我用手机自带的浏览器,登录手机的官网(比如华为手机的官网),这时候我不希望用户在浏览器里面再次登录. 要实现这个功能,需要服务端和客户端配合 ...

  6. android应用是非正式版本,华为手机自带浏览器,应用是非正式发布版本,当前设备不支持安装

    查了一下网上一些解决方案: 解决方法: 在gradle.properties 文件中添加如下指令: android.injected.testOnly=false 但是我配置了没有效果,我测试是用华为 ...

  7. html密码浏览器不自动登录,IE浏览器不能自动登录怎么解决|IE浏览器不能记住密码怎么办...

    ‍ IE浏览器可以记住用户输入的用户名和密码,这样下次再登录的时候就不必再输入用户名和密码,带来很大的方便.但有不少用户反映,在输入账号和密码后明明勾选了"记住我"或者" ...

  8. 511遇见易语言大漠多线程自动切换账号循环登录任务模板

    自动切换账号是多线程模板的一个变化应用,你有100个账号,每次开始10个线程,当第一批账号完成任务(登录,刷任务,退出)时,我们面临最困难的是如何在原有线程的基础上,自动开启下一批(第11-20)个账 ...

  9. 如何使用谷歌插件自动备份标签

    如何使用谷歌插件EverSync - Sync bookmarks自动备份标签 前言 由于本人在工作过程中因为公司电脑突然性的死机.以至于我存了差不多3个月的工作标签,基本上是荡然无存. 虽是痛心疾首 ...

最新文章

  1. java十进制小数转化为二进制小数代码 乘二取整法_(四)改掉这些坏习惯,还怕写不出健壮的代码?...
  2. 脑机头条 第20期| 世界机器人大会-脑控打字创纪录
  3. xcode中工程引用设置
  4. php面向对象编程代码怎么写,php面向对象编程(一)
  5. linux lvm 查看,Linux LVM 详解
  6. Laravel核心解读--Database(四) 模型关联
  7. adb概览及协议參考
  8. 傲娇Android二三事之诡诡异异的图片加载
  9. 算法设计与分析——排序算法:十大排序算法总结
  10. 怎么免费注册微信小程序-微信小程序开发-视频教程1
  11. 怎么将svn服务器上的文件彻底删除,如何彻底删除SVN中的文件和文件夹(附恢复方法)...
  12. 【渝粤教育】广东开放大学 数据库应用 形成性考核 (26)
  13. [滑模控制器浅述] (5) 基于分层滑模的吊车控制
  14. 用js进行日期的加减
  15. phpstudy集成环境或apache环境下 php 获取不到Authorization
  16. Android Studio——Spinner 修改字体颜色和字体大小
  17. html5仿苹果通讯录效果,iOS 仿通讯录索引
  18. MEncoder 转码 psp 视频
  19. 利用matlab程序自动生成feko近场云图及matlab程序实现自动化feko运行
  20. 护卫神 php 文件权限,文件保护设置_护卫神

热门文章

  1. 关于Ajax局部刷新
  2. 如何实现中英文排版优化
  3. C++ COM编程之QueryInterface函数(一)
  4. int 为什么是2147483647_INT_MAX (2147483647) 和INT_MIN (-2147483648)溢出
  5. expect简介及用法
  6. 石墨烯 量子计算机,打假!2021年,请放过“量子”和“石墨烯”
  7. 编译原理3 - 词法分析
  8. WPF基础-DataGrid
  9. quartz mysql 配置_Quartz配置
  10. MySQL列举常见的关系型数据库和非关系型都有那些?