OAuth 2.0 参数意义
最近在研究OAuth 2.0的技术,发现网上说的其实挺全面的,但是会给刚接触的服务器端开发者一些迷惘,就是这么多的参数如何用?我仔细理解了一下。
请求参数
|
必选 |
类型及范围 |
说明 |
client_id |
true |
string |
申请应用时分配的AppKey。 |
redirect_uri |
true |
string |
授权回调地址,站外应用需与设置的回调地址一致,站内应用需填写canvas page的地址。 |
response_type |
false |
string |
返回类型,支持code、token,默认值为token。 |
state |
false |
string |
用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。 |
display |
false |
string |
授权页面的终端类型,取值见下面的说明。 |
scope |
false |
string |
以英文逗号’,’分隔的权限列表,若不传递此参数,代表请求默认的basic权限。 |
oauth_version |
False |
string |
(可选)版本号(目前只支持2.0) |
redirect_uri说明:
应用开发者预先在申请应用时填写的地址,主要用于:当验证通过时,需要返回的页面,比如我开发的应用有一个登录成功的首页,那么用户在授权验证通过后,要回到我的应用的这个首页,那么这个首页的地址就是回调地址,参数state也就是需要传到我的应用首页的参数,这个参数在经过授权服务器(新浪微博)时会原封不动的传给回调地址(也就是我的应用的首页)。如果是移动终端授权,个人认为此参数和state均可以不用,只需要以json方式返回access_token即可
display说明:
参数取值 |
类型说明 |
default |
默认的授权页面,适用于web浏览器。 |
mobile |
移动终端的授权页面,适用于支持webView的智能手机。 |
response_type为code
返回值字段 |
字段类型 |
字段说明 |
code |
string |
用于调用access_token,接口获取授权后的access token。 |
state |
string |
如果传递参数,会回传该参数。 |
response_type为token
返回值字段 |
字段类型 |
字段说明 |
access_token |
string |
用来调用其它接口的授权过的accesstoken。 |
expires_in |
string |
accesstoken有效期时间,unix的timestamp格式。 |
refresh_token |
string |
刷新token,如果有获取权限则返回。 |
state |
string |
如果传递参数,会回传该参数。 |
response_type为token
//请求
https://api.t.sina.com.cn/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=token
//同意授权后会重定向
http://www.example.com/response#access_token=ACCESS_TOKEN&expires_in=250327040&refresh_token=REFRESH_TOKEN
response_type为code
//请求
https://api.t.sina.com.cn/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code
//同意授权后会重定向
http://www.example.com/response&code=CODE