OAuth2:隐式授权(Implicit Grant)类型的开放授权
适用范围
仅需临时访问的场景
用户会定期在API提供者那里进行登录
OAuth客户端运行在浏览器中(Javascript、Flash等)
浏览器绝对可信,因为该类型可能会将访问令牌泄露给恶意用户或应用程序
流程剖析
1. 让用户明白所做的操作并请求认证
这一步与授权码认证模式中的操作类似,即当牵涉到OAuth认证时,应首先让用户明确该操作。然后将用户引导至授权页面。
该授权接口的URL会在开发者文档中给出,以谷歌为例:
https://accounts.google.com/o/oauth2/auth
在请求该页面时还需附带几个参数:
client_id
在应用注册时提供
redirect_uri
授权认证后的重定向地址
scope
应用所请求访问的数据,一般由空格分隔的多个字符串组成
response_type
对于此授权类型来说为“token”,即在授权成功后会返回access token
2. 从URL中解析access token
当授权顺利完成后,用户会被重定向到redirect_uri中指定的URL并附带access_token等重要数据,它们会包含在url hash中,例如:
http://example.com/callback#access_token=ya29GAHES6ZSzX&token_type=Bearer&expires_in=3600
JavaScript是不会自动将解析hash段中的元素解析成键/值对,因此我们需要手动进行该操作:
1
2
3
4
5
6
7
8
|
var oauthParams = {};
// parse the query string
// from http://oauthssodemo.appspot.com/step/2
var params = {}, queryString = location.hash.substring(1), regex = /([^&=]+)=([^&]*)/g, m;
while (m = regex.exec(queryString)) {
oauthParams[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
...
|
3. 访问API
拿到了access_token,API接口就向你敞开了大门,接下来的操作我想就无需阐述了。
从整个流程可以看出,相比授权码授权,隐式授权少了第一步获取Authorization Code的过程,因此变得更为简单。但正因为如此也降低了安全性。
OAuth2:隐式授权(Implicit Grant)类型的开放授权相关推荐
- Scala 隐式(implicit)详解
文章正文 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 1.Spark 中 ...
- c语言参数隐式转换,Implicit conversions(隐式转换)
当预期在不同类型的值的上下文中使用表达式时,可能会发生转换: int n = 1L; // expression 1L has type long, int is expectedn = 2.1; / ...
- jQuery 中的显式遍历(explicitly iterate)与隐式遍历(implicit iteration)
jQuery 中的显式遍历(explicitly iterate)与隐式遍历(implicit iteration) 在 jQuery 中,我们把 $() 叫做核心函数. 如果通过核心函数找到的元素不 ...
- C语言隐式类型转换(字符类型以及短整型的运算规则)
C的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升. 举个例子: char a = ...
- java3D反恐精英3_统一5.3.0f4错误CS0029;不能隐式转换'UnityEngine.Vector3'类型为'float'...
请帮助,我正在制作一个砖破坏者游戏并在桨脚本上工作,但它在第17行显示错误,我不知道如何将float更改为vector3 using UnityEngine; using System.Collect ...
- oauth2.0 php简化模式,OAuth2.0学习(1-5)授权方式2-简化模式(implicit grant type)
授权方式2-简化模式(implicit grant type) 简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授 ...
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别...
msdn参考:http://msdn.microsoft.com/zh-cn/library/s53ehcz3.aspx http://msdn.microsoft.com/zh-cn/library ...
- 【Scala笔记——道】Scala 隐式Implicit
Scala隐式 隐式究竟是什么呢? scala 中隐式相较于java 来说是一种全新的特性.那么隐式究竟是什么呢? 隐式存在三种基本使用方式: - 隐式属性 - 隐式方法 - 隐式对象 隐式属性例如 ...
- Scalaz(1)- 基础篇:隐式转换解析策略-Implicit resolution
在正式进入scalaz讨论前我们需要理顺一些基础的scalaz结构组成概念和技巧.scalaz是由即兴多态(ad-hoc polymorphism)类型(typeclass)组成.scalaz typ ...
最新文章
- 阿里钉钉,马云旗下的又一个千亿美金产品?
- Bitcoin 地址原理(2)私钥、公钥、地址基本概念
- Linux 条件变量使用细节(为何调用 pthread_cond_wait 前加锁,函数内部解锁,返回时又加锁)
- hive(3)——在hive中使用自己写的函数(python实现)
- windows2008 sp2 x64安装 ocs 2007 r2 笔记
- c语言成绩等级switch语句,请高手 帮忙做一道c语言题 编程,把百分制成绩转换成5级记分制,要求用switch语句。 90分以上(包括90):...
- 第十三节:易学又实用的新特性:for...of
- java控制台输出五行字符串_java五行代码导出Excel
- 翻译 - EXT JS 5:Controlling an Application with Router
- 多线程怎么保证数据安全_Python threading实现多线程 提高篇 线程同步,以及各种锁...
- python datetime datetime
- linux sleeping进程多_一文掌握Linux实战技能系统管理篇
- UCMA(OCS) 开发系列之一
- 优化技巧:提前if判断帮助CPU分支预测
- 魔鬼训练Day1作业
- Spring AOP术语:连接点和切点的区别。
- 华为freelace耳机修整详录
- ui设计师色彩运用_网页设计师的20多种色彩工具
- android游戏和ios游戏哪个多,Android游戏类App占27.1% 与iOS差异显著
- jsp及Servlet经典面试题以及答案
热门文章
- codeforces 598C C. Nearest vectors(极角排序)
- 解决安卓TextView高度和textSize大小不一致问题
- 实现IMSI、IMEI查询
- Castle ActiveRecord学习笔记四:各种映射
- 如何把MySql数据库中的数据导入到MyCat集群中_---Linux运维工作笔记050
- python数据结构剑指offer-二维数组中的查找
- 显式强制类型转换static_cast, dynamic_cast, const_cast, reinterpret_cast
- ubuntu登陆死循环(全是搜狗拼音的锅!!!!!!!!!!!)
- 通过SublimeCodeIntel设置JavaScript自动补全
- 随想录(以师带徒的原则)