适用范围浏览器
仅需临时访问的场景安全
用户会按期在API提供者那里进行登陆app
OAuth客户端运行在浏览器中(Javascript、Flash等)google
浏览器绝对可信,由于该类型可能会将访问令牌泄露给恶意用户或应用程序url
流程剖析spa
1. 让用户明白所作的操做并请求认证code
这一步与受权码认证模式中的操做相似,即当牵涉到OAuth认证时,应首先让用户明确该操做。而后将用户引导至受权页面。
该受权接口的URL会在开发者文档中给出,以谷歌为例:blog
https://accounts.google.com/o/oauth2/authtoken
在请求该页面时还需附带几个参数:接口
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
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的过程,所以变得更为简单。但正由于如此也下降了安全性。