Android Authenticator使用(转)
出处: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
详略。
创建服务
从而使其他进程能够获取账号信息。详略。
最新文章
- Rational Rose 2007 破解版安装过程
- BizTalk开发系列(八) BizTalk Server 常识整理
- 利用runTime,实现以模型为主的字典转模型(注意与KVC的区别)
- linux为命令取别名
- 移动设备日期选择插件(基于JQUERY)
- [React Testing] Element types with Shallow Rendering
- std::map的insert和下标[]访问
- supersocket--SuperSocket 1.4系列文档(1) 第一个例子, EchoService
- iOS 使用Method Swizzling隐藏Status Bar
- WinForm 进程和线程
- hdu_5507_GT and strings(AC自动机)
- Jquery树控件ZTree异步加载
- iOS 导航栏不可点击
- 关于css禁止文本复制属性
- git pull与git fetch的区别
- Simple tutorial for using TensorFlow to compute a linear regression
- 【Python】This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck
- linux学习第十八天 (Linux就该这么学)
- Task Asnyc 异常问题
- Linux安装gcc时碰到的有关问题解决(解决gcc依赖有关问题)