-
Notifications
You must be signed in to change notification settings - Fork 0
Home
fundawang edited this page Mar 20, 2013
·
27 revisions
此模块旨在实现纯服务器端的简单 OAuth 接口,使得第三方应用可以调用网站提供的数据。
- 模块接口地址为 /simpleoauth,请求类型为 HTTP GET。
- 鉴权成功时,返回 HTTP 200/OK,MIME 类型为 json(application/json)。
- 鉴权失败时,返回 HTTP 403/Access Forbiden,MIME 类型为不可知。第三方应用应根据 HTTP 响应头来判断调用鉴权是否成功。
- 第三方应用应首先通过可靠途径获取 APPID 和 APPKEY。其中 APPKEY 是服务器和第三方应用约定的密钥,不在互联网上传递。
- 第三方应用通过模块提供的 grant_access 接口,输入APPID,由服务器返回 access_token。第三方应用应保存此 access_token 及其失效时间。
- 第三方应用通过调用相应的接口(如signup,score),输入 access_token,获取用户信息。
此接口所有输入输出的内容,都需要通过服务器和第三方应用事先约定的 APPKEY 进行 MD5 摘要运算,生成 sign,以确保内容的可靠。
将所有输入内容,去掉 op 参数,所有参数的 内容 与 APPKEY 一起进行字典排序,然后拼接在一起,进行 MD5 运算。得出的结果即为 sign 的内容。
如 grant_access 接口,输入的参数仅有 APPID,若 APPID 为2013abc123
,APPKEY为123456
,则排序后为123456
,2013abc123
,拼接后为 1234562013abc123
,对此字符串进行 MD5 摘要计算,其结果为 c0a5d8a81740dd2ea3c35b6408bc1273
。
将所有输出的 内容 ,与 APPKEY 一起进行字典排序,然后拼接在一起,进行 MD5 运算。得出的结果即为 sign 的内容。
如 grant_access 接口,输出的结果为 {"status":"0","access_token":"51494768c365c","expire_time":"1363758704","sign":"8da7752cd2f027ea03724a0ab6bdf685"}
,APPKEY为123456
,则将0
,51494768c365c
,1363758704
,123456
进行排序后为 0
,123456
,1363758704
,51494768c365c
,拼接后为 0123456136375870451494768c365c
,对此字符串进行 MD5 摘要计算,其结果为1a8c0615e8ec4f587534782a441193c9
。