1. OAuth2.0介绍

说到第三方登录,离不开oauth2.0,oauth2.0是“用户认证和授权的标准”,是从oauth1.0基础上发展来的。下图是oauth2.0六个过程分析图,为了分析这6个流程,下面我们通过

新浪微盘

授权登录demo,详细解析。

2. 运行新浪微盘SDK demo

运行新浪微盘(

开发者网站

)sdk demo,使用新浪微博账号授权,入下图进行操作:

3. 分析logcat日志信息

3.1 logcat信息

上面第2步运行demo,可以看到eclipse 的logcat打印很多信息,如下:

(1) https://auth.sina.com.cn/oauth2/authorize?

client_id=2330724462&redirect_uri=http%3A%2F%2Fvauth.appsina.com%2Fcallback1.php&display=mobile

(2)http://vauth.appsina.com/callback1.php?code=67db0ec6d0bac50253e254ff03a605fb&state=

(3) https://auth.sina.com.cn/oauth2/access_token?

client_id=2330724462&client_secret=04f81fc56cc936bfc8f0fa1cef285158&

grant_type=authorization_code&code=49ae713e40e740cdb7cf16c92ac7e2ed&

state=&redirect_uri=http%3A%2F%2Fvauth.appsina.com%2Fcallback1.php

下面,我们一步步分析上面logcat信息。

3.2 打开H5授权页面

将上面第1步网址拷贝到浏览器,发现其实就是打开授权页面,如下图(浏览器的开发者视图显示的效果):

3.3 授权回调

在3.2的页面中输入新浪微博账号和密码,授权登录,发现跳转到下面的页面,这个页面就是3.1中logcat信息的第2条,其实就是打开授权回调页面:

3.4 获取token

3.1中第3条logcat信息,其实就是调用接口,传入3.3获取的参数code值,获取access_token,这个步骤我们可以通过Firefox浏览器的RESTClient接口测试插件来分析,如下:可以看到服务器返回access_token

4. 分析OAuth2.0六个流程

上面分析了logcat的信息,现在我们再来看看OAuth2.0六个步骤:

4.1 六个角色

分析6个流程前,我们首先熟悉几个角色:

Client

:客户端,这里指的是新浪微盘SDK demo;

Resource Owner

:资源拥有者,这里指的是授权登录账户;

Authorization Server

:授权服务器,这里指的是新浪的服务器;

Resource Server

:资源服务器,提供资源发服务器,这些资源比如用户名、相册等,这里的资源服务器指的是新浪服务器。

4.2 OAuth2.0六个流程

如上图:

A

:客户端发起授权请求,其实就是打开一个授权页面(3.1中的1);

B

:用户(资源拥有者)授权后,跳转回调页,回传code值(3.1中的2)。

C

:发起授权请求,获取access_token,其实就是使用B中的code,调用接口(3.1中的3)获取access_token。

D

:授权服务器验证,如果通过返回access_token,详见3.4。

E

:使用获得access_token申请获取资源,比如我们可以获取用户信息,如下:

https://api.weipan.cn/2/account/info?access_token=3a71ce6665v5t4K2xJtU236L9Vfce151

F

:资源服务器返回资源,如下图返回用户信息:

以上就是OAuth2.0的6个流程。

本文版权归传智播客

Android培训学院所有,欢迎转载,转载请注明作者出处。谢谢!

作者:传智播客Android培训学院

首发:

http://www.itcast.cn/android/

android sina oauth2.0 code认证,Android通过第三方登录理解oauth2.0机制相关推荐

  1. 第三方登录过程—OAuth2.0协议

    ---恢复内容开始--- 理清思路 1.在第三方注册成为开发者,拿到第三方给的client_id(app_id---就像你的身份证.QQ号)和client_secret(就像你的QQ密码): 2.填写 ...

  2. OAuth认证原理与第三方登录

    1.背景 以下例子引用知乎"OAuth 授权的工作原理是怎样的?足够安全吗?"中李天放的回答 假如你在某个网站A上使用微博进行第三方登录,那么你可以想象新浪微博就是你的家.偶尔你会 ...

  3. 【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - QQ登录下

    qq登录下 前面把所有的代码组件都弄好了.现在可以开启调试了 在这之前你需要有一个qq互联的应用:也就是为了拿到appid和appSecret:自己去qq互联创建一个应用即可 这里讲下本地怎么调试应用 ...

  4. Spring Security并没有那么难嗷 简单理解OAuth2.0

    文章目录 1. 基本概念 1.1 什么是认证 1.2 什么是会话 1.3 什么是授权 1.4 授权的数据模型 1.5 RBAC 1.5.1 基于角色的访问控制 1.5.2 基于资源的访问控制 2. 基 ...

  5. Spring Cloud入门-Oauth2授权之基于JWT完成单点登录(Hoxton版本)

    文章目录 Spring Cloud入门系列汇总 摘要 单点登录简介 创建oauth2-client模块 修改授权服务器配置 网页单点登录演示 调用接口单点登录演示 oauth2-client添加权限校 ...

  6. 新浪微博Oauth2.0授权认证及SDK、API的使用(Android)

    ---------------------------------------------------------------------------------------------- [版权申明 ...

  7. Android HTTP2 + Oauth2 + Jwt 接口认证实例

    2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Java 手札> Netkiller Java 手札 Mr. Neo Chan,  ...

  8. 认证android retrofit,Retrofit之项目介绍

    项目介绍 官网对retrofit介绍是这是一个"类型安全(type-safe)"的Android/Java http客户端. 目前retrofit的最新正式版本为1.9.0. 2. ...

  9. 新浪微博Android客户端开发之OAuth认证篇

    新浪微博客户端开发之OAuth认证篇 2013年7月29日新浪微博客户端开发 OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程,我就随便找了一 ...

最新文章

  1. LNMP(php-fpm的pool,慢执行日志,定义open_bashdir,php-fpm进程管理
  2. React Native布局详细指南
  3. cahrt框架 ios_iOS Charts框架集成及使用
  4. 云计算与分布式计算,网格结算,对等计算,并行计算..的关系
  5. 5G毫米波通信中一些量化的概念
  6. 【产品活动】阿里云GPU云服务器年付5折!阿里云异构计算助推行业发展!
  7. 如何更新mysql数据库字段_如何使用MySQL一个表中的字段更新另一个表中字段
  8. origin设置不同区域的颜色_[测试狗]Origin入门教程(二十四):效率翻倍小技巧——修改默认字体...
  9. JavaScript 学习笔记— —Date对象
  10. flash player for linux 64,64-bit linux下装什么adobe flash player
  11. 【Logstash】Logstash:把MySQL数据导入到Elasticsearch中
  12. D3/Echarts/G2的对比分析
  13. 从一个例子来看Tagged Pointer特性
  14. 美育在计算机教育中应用,浅谈在小学信息技术课堂中有效实施美育.
  15. c语言如何反复执行一段程序,C语言中重复执行程序的问题
  16. 2022年5月语音合成(TTS)和语音识别(ASR)论文月报
  17. 使用exceljs导出部门-职位联动下拉框的excel
  18. 1.深入.NET框架
  19. Games101,作业7(多线程提速)
  20. Java-Excel报表开发POI(含POI保护工作表功能)

热门文章

  1. LeetCode Self Crossing(判断是否相交)
  2. LeetCode Maximal Rectangle(dp)
  3. SeekBar的使用(一):实现OnSeekBarChangListener
  4. ffmpeg 播放器原理
  5. react学习笔记(序)
  6. VC++ 文件和应用程序关联,默认图标不显示问题
  7. JNDI 笔记(一) 概述
  8. 【Java】判断字符串是否含字母
  9. css选择器(css Selectors)的语法分析
  10. Javascript Array对象