Android 自带浏览器谷歌账号自动登录的实现
来源:互联网 发布:造价师工程师网络教育 编辑:程序博客网 时间:2024/05/29 23:45
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 自带浏览器谷歌账号自动登录的实现
- Android 自带浏览器谷歌账号自动登录的实现 -- 无法登陆原因分析
- Mac电脑使用:删除保存在Mac电脑自带的Safari浏览器、谷歌浏览器、火狐浏览器中的账号和密码的方法
- android 自带 浏览器的默认标签
- VS2008自带mssql 2005 sa账号登录问题
- android自动登录的实现
- Android 自动登录的实现
- 运行Chromium浏览器缺少google api密钥无法登录谷歌账号的解决办法
- Android开发实现新浪账号授权登录的功能
- 【Android】第三方QQ账号登录的实现
- 浏览器自带的console
- 浏览器自带的CSS
- Android实现自带横线的EditText
- android自带抽屉效果的实现
- Android实现自带横线的EditText
- 调用Android系统自带的图片浏览器
- 怎么调用android 自带的图片浏览器
- android如何使webview不跳到自带的浏览器上
- Qt5类之QMargins
- 一、SQL Server 2008的系统组成和文件组成
- Java开发中的23种设计模式之二十:状态模式(State)
- java基础入门----LinkedList练习1
- 4.2 链栈
- Android 自带浏览器谷歌账号自动登录的实现
- 使用IKAnalyzer进行中文分词
- qt中快捷键补全
- Java开发中的23种设计模式之二十一:访问者模式(Visitor)
- 【一天一篇CPP】对象的动态建立、释放、赋值和赋值
- 安装Weblogic时报Exception in thread "winRegistry" java.lang.UnsatisfiedLinkError
- ArcGIS Server 10 in Windows7中的个别有关问题
- 图像处理中频域(Fourier)的应用总结
- SQL语句总结杂记【收集中】