出处:http://blog.udinic.com/2013/04/24/write-your-own-android-authenticator/

这篇文章个人觉得讲的非常好,比官方文档还要清晰,将各个概念讲的非常清楚,对于新手非常有用,所以在这里记录一下。

摘要:

为什么要使用Authenticator,而不是自己直接写?

答:标准化方法、简化开发流程,有管理多种token、与其他app共享token等功能。支持sync adapter等google框架。

概念解释

几个主要的部分:token;服务器;AccountManager,管理各个账户,其他部分会向AccountManager请求token,而AccountManager调用特定模块来回应请求;AccountAuthenticator,用于处理特定账户类型(比如你自己创建的账户类型)的模块,AccountManager受到请求后对AccountAuthenticator发起对话,而AccountAuthenticator执行相应的操作,可以通过launch activity从用户处获取token,或者在相应位置获取token(所以AccountManager名字很形象了,是管理员,但是不干事的);AccountAuthenticatorActivity,是用来和用户交互、和服务器交互的activity。

当app需要authentication的时候,它只和一个方法,即AccountManager.getAuthToken()会话;而AccountManager通过如下逻辑获取token:

(说实话,我没看懂图。)

首次登陆流程:

  • app向AccountManager请求token
  • AccountManager向相关的AccountAuthenticator请求token
  • 由于是首次登陆,没有缓存的token,因此AccountAuthenticator launch一个Activity,要求用户登陆
  • 用户登陆,AccountAuthenticator从服务器获取一个token
  • AccountManager将token缓存,以便后期使用
  • app获取token,万事大吉

创建Authenticator

继承自AbstractAccountAuthenticator。需要实现的主要方法:

addAccount

添加账号。需要能够launch相应的activity。

getAuthToken

获取token。

创建activity

详略。

创建服务

从而使其他进程能够获取账号信息。详略。

Android Authenticator使用(转)的更多相关文章

  1. 【Android】一种提高Android应用进程存活率新方法

    [Android]一种提高Android应用进程存活率新方法 SkySeraph Jun. 19st 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph ...

  2. (翻译) Android Accounts Api使用指南

    本文翻译自Udinic的文章Write your own Android Authenticator,可能需要FQ才能阅读.这是译者目前能找到的介绍如何使用Android的Accounts Api最好 ...

  3. 一种提高Android应用进程存活率新方法

    一.基础知识 1.Android 进程优先级 1.1 进程优先级等级一般分法:- Activte process- Visible Process- Service process- Backgrou ...

  4. Android Weekly Notes Issue #224

    Android Weekly Issue #224 September 25th, 2016 Android Weekly Issue #224 本期内容包括: Google Play的pre-lau ...

  5. Android okHttp网络请求之缓存控制Cache-Control

    前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...

  6. Google Authenticator

    Google Authenticator 现在越来越多的网站采用两步验证,实现方式可能有所区别,一般来说是 1+? (1 即 普通的用户名和密码, ?可能是实物如U盾.手机短信验证码或其他).?的重点 ...

  7. Android使用Java Mail API发送邮件

    最近在考虑为已经有的一个应用程序增加一个用户反馈的功能,用户可以通过反馈功能将用户的意见和建议.程序出现的问题以一种更符合用户习惯的方式反馈回来.网上也有一些实现好的反馈程序的服务,包括bug的提交. ...

  8. Android 学习笔记之Volley开源框架解析(五)

    学习内容: 1.PoolingByteArrayOutputStream 2.ByteArrayPool 3.HttpStack 4.HurlStack 5.HttpHeaderParser   前面 ...

  9. 谷歌验证 (Google Authenticator) 的实现原理是什么?

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:徐小花链接:http://www.zhihu.com/question/20462696/answer/18731073来源: ...

随机推荐

  1. (转)CentOS7下yum安装mysql配置多实例

    原文:http://blog.csdn.net/poklau/article/details/54951798

  2. Visual Studio 2015中使用gdb远程调试linux程序

    VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用. 如果可以使用VS来调试linux程序,应该是一件比较愉快的事情. 这在2015中变得可能,因为从2015开始VS支持An ...

  3. asp.net MVC 多系统目录结构

    学习了几天的mvc5,发现vs把所有的控制器都放在同一个目录Controllers目录下,细想一下,假如一个项目包含几个系统: 行政办公系统.培训管理系统.督办管理系统.会议管理系统…… 如果还把控制 ...

  4. hibernate的配置文件,使用XML方式

    <?xml version="1.0" encoding="UTF-8"?> <!-- 标准的XML文件的起始行,version='1.0'表 ...

  5. 读取Java注解类型

    参考文章: (1)https://www.cnblogs.com/extjs4/p/6411507.html 关于注解第一篇 (2)https://www.cnblogs.com/extjs4/p/6 ...

  6. ubuntu16.04 nginx安装

    .gcc.g++依赖库 apt-get install build-essential apt-get install libtool .安装 pcre依赖库(http://www.pcre.org/ ...

  7. paxos协议更新日志

    基于Paxos协议的数据同步与传统主备方式最大的区别在与Paxos只需任意超过半数的副本在线且相互通信正常,就可以保证服务的持续可用,且数据不丢失. Basic paxos协议更新日志 我们将数据持久 ...

  8. Nodejs学习笔记(十一)—数据采集器示例(request和cheerio)

    写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则解析数据比较繁琐些,总体来说没啥不好的,就是效率要差一些, 用nodejs写采集程 ...

  9. javaScript年份下拉列表框内容为当前年份及前后50年

    javascript下拉列表框,内容为当前年份及前后50年,默认选择为当前年份 <script language="javascript" type="text/j ...

  10. javaRPC原理

    在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 而一旦踏入公司尤其是大型互联网公司就会发现,公司的 ...