出处: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

详略。

创建服务

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

最新文章

  1. Rational Rose 2007 破解版安装过程
  2. BizTalk开发系列(八) BizTalk Server 常识整理
  3. 利用runTime,实现以模型为主的字典转模型(注意与KVC的区别)
  4. linux为命令取别名
  5. 移动设备日期选择插件(基于JQUERY)
  6. [React Testing] Element types with Shallow Rendering
  7. std::map的insert和下标[]访问
  8. supersocket--SuperSocket 1.4系列文档(1) 第一个例子, EchoService
  9. iOS 使用Method Swizzling隐藏Status Bar
  10. WinForm 进程和线程
  11. hdu_5507_GT and strings(AC自动机)
  12. Jquery树控件ZTree异步加载
  13. iOS 导航栏不可点击
  14. 关于css禁止文本复制属性
  15. git pull与git fetch的区别
  16. Simple tutorial for using TensorFlow to compute a linear regression
  17. 【Python】This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck
  18. linux学习第十八天 (Linux就该这么学)
  19. Task Asnyc 异常问题
  20. Linux安装gcc时碰到的有关问题解决(解决gcc依赖有关问题)

热门文章

  1. (转)mysql explain详解
  2. Python 日期和时间的几种输出格式
  3. VUE之文字跑马灯效果
  4. 如何虚拟机里安装Win10操作系统
  5. flex的使用以及布局
  6. 使用subgit进行svn迁移至git(branch,tags)
  7. 自然语言处理--TF-IDF(关键词提取)
  8. Nodejs学习笔记(四)—与MySQL交互(felixge/node-mysql)
  9. 国际化实现之安装脚手架vue以及打包问题
  10. 【转】SQL语句统计每天、每月、每年的数据