出处: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. 漫谈NIO(2)之Java的NIO

    1.前言 上章提到过Java的NIO采取的是多路IO复用模式,其衍生出来的模型就是Reactor模型.多路IO复用有两种方式,一种是select/poll,另一种是epoll.在windows系统上使 ...

  2. 【Gitbook】实用配置及插件介绍

    前言 实际效果可以查看这里 github地址 配置 title 设置书本的标题 "title" : "Gitbook Use" author 作者的相关信息 & ...

  3. python基础笔记之注释三种方法

    ---恢复内容开始--- 1,,单行注释  用# 2,多行注释 用 “”” dddd""" 3,较长行虽然分行写但是只是注释,最终显示为一行:用 \ ---恢复内容结束- ...

  4. 删除Open with Atom右键菜单

    特别特别讨厌Atom的右键菜单,叕没有设置项可以去掉,烦!安装完RegScanner v2.15汉化版之后,开始搜索删除Atom的右键菜单 1.打开E:\RegScanner2.加载配置文件 E:\R ...

  5. wordpress 后台404解决办法

    1.vim /usr/local/nginx/conf/wordpress.conf2.rewrite /wp-admin$ $scheme://$host$uri/ permanent;3.ngni ...

  6. react config test env with jest and create-react-app 1

    /.babelrc { "presets": ["@babel/preset-env","@babel/preset-react"], &q ...

  7. UTF8最好不要带BOM

    摘自:http://www.cnblogs.com/findumars/p/3620078.html   几周前还在为BOM的问题苦恼着...正如@梁海所说,“不含 BOM 的 UTF-8 才是标准形 ...

  8. 玩转Git之初识Git

    git是什么 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 Git 和 svn 有什么区别 它们之间的主要区别是Git是分布式的,而svn是集中式. 当然Git也可 ...

  9. [转]微信小程序之购物车 —— 微信小程序实战商城系列(5)

    本文转自:http://blog.csdn.net/michael_ouyang/article/details/70755892 续上一篇的文章:微信小程序之商品属性分类  —— 微信小程序实战商城 ...

  10. AE文档保存

    private void barButtonItem4_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)//保存 { ...