OAth2.0 详解
1.引导需要授权的用户到 web 授权页面
uri = "http://dcg.tuchong.com/oath2/authoriza?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI"
-
oath2/authoriza
: API 服务提供方的授权页面 -
client_id
=YOUR_CLIENT_ID: 服务提供方给当前应用分配的 app_key -
response_type
=code: 为返回的授权码类型,一般为 code,如果有提供多种获取授权的方式,则会有其他值可选 -
redirect_uri
=YOUR_REGISTERED_REDIRECT_URI: 为授权成功后的回调地址,如果用户点击【确认授权】, 则API服务提供方会引导浏览器跳转到此地址,同时会在URL中加上参数 code = AUTHORIZATION_CODE(用于获取 access_token 的 code)
2.用户同意授权
如果用户同意授权,则跳转至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE,生成用于获取 access_token 的 authorization_code,跳转回申请授权的应用
说明:出于安全考虑,API 服务提供方会对 redirect_uri 指定的回调地址进行检查,只有符合申请应用 app_key 时设置的回调地址规则才能正确显示授权页面,防止非法程序冒用当前应用来申请对用户的授权
3.应用接收到第二步中回调的 code 之后,请求一下地址获得 access_token
access_token: "http://dcg.tuchong.com/oauth2/access_token?clien_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE"
-
client_id
: 服务提供方给当前应用分配的 app_key [一般都不会改变] -
client_secret
: 当前应用对应的 app_secret,通过它和 app_key 来确定应用的身份,当此 app_secret 泄露时,可以为应用设置一个新值 -
grant_type
: 换取 access_token 的 code 的类型,当有多种授权方式时才需要提供此参数 -
redirect_uri
: 当前用于接收 authorization_code 的回调地址,基于安全考虑,API提供方一般要求校验此值 -
code
: API 服务提供方回调时传过来的 authorization_code
如果换取 access_token 成功,则返回
{
"access_token": "S1AV32hkKG",
"remind_in": 3600,
"expires_in": 3600
}
说明:
-
access_token 为本次授权申请所获得的授权码,在执行后续的 API 请求时需要同时提供此 access_token 以验证当前用户的身份
-
remind_in 和 expire_in 为此 access_token 的有效期相关信息,基于对安全的考虑,每个 access_token 都有有效期限限制,超过一定时间后应用需要重新向用户申请授权,这个有效期一般与不同的 API 应用提供商及其对应用的评级有关
4.在成功获取到 access_token 后,使用获得的 OAuth2.0 Access Token 调用 API
在请求 API 时一般需要带上以下两个参数:
-
source
: 当前应用的 app_key -
access_token
: 第三步获取到的 access_token
接口
-
oath2/authoriza (必须): 请求用户授权 token
-
oath2/access_token (必须): 获取授权过的 access token
-
oath2/get_token_info: 授权信息查询接口,用于查询access_token 信息
-
oath2/revokeoauth2: 回收接口,回收授权,相当于注销