API |
描述 |
/jitsopen/api/oauth2/v1.0/token |
根據(jù)授權(quán)碼獲取token |
/jitsopen/api/oauth2/v1.0/token |
根據(jù)refreshToken刷新token |
/jitsopen/api/oauth2/v1.0/userinfo |
根據(jù)token獲取用戶信息 |
2.1 服務(wù)域名
https://jits.open.oppomobile.com
2.2 通信協(xié)議
支持通過 HTTP 通道進(jìn)行請(qǐng)求通信
2.3 請(qǐng)求方法
支持 HTTP POST 方法發(fā)送請(qǐng)求,請(qǐng)求參數(shù)包含在請(qǐng)求的 URL 中
2.4 簽名算法
說明:
api_sign計(jì)算規(guī)則為涉及請(qǐng)求參數(shù)(包含get參數(shù)和POST參數(shù)( 值為NULL的參數(shù)不參與簽名),例如請(qǐng)求參數(shù)k1=v1,參數(shù)k2=v2)
詳細(xì)算法如下:
step 1:請(qǐng)求參數(shù)(去除appId 、sign、timestamp 這三個(gè)參數(shù))按照參數(shù)名字母升序排列
step 2:請(qǐng)求參數(shù)根據(jù)&拼接字符串string。(例如,拼接成k1=v1&k2=v2)
step 3:字符串string之后拼接timestamp,appId和appSecret。(例如,接上一步,k1=v1&k2=v2×tamp={timestamp}&appId={appId}&appSecret={appSecret})
step 4:對(duì)step3得到的字符串進(jìn)行MD5哈希(32位小寫)得到sign,然后轉(zhuǎn)換為十六進(jìn)制字符串作為參數(shù)傳遞
例子:
1) 分配調(diào)用方appId=5f4dbf2e5629d8cc19e7d51874266678 appSecret=a198fe96c4cadb744ed57b3ad563f037
2)請(qǐng)求傳遞參數(shù):
GET參數(shù)為: c=1&b=2
POST參數(shù)為: a=3 d=4
3)當(dāng)前系統(tǒng)時(shí)間戳:timestamp=1510277528
4)則 byte[] sign=md5(a=3&b=2&c=1&d=4×tamp=1510277528&appId=5f4dbf2e5629d8cc19e7d51874266678&appSecret=a198fe96c4cadb744ed57b3ad563f037)
5)String strSign = fromBytesToHex(sign);
算法參考實(shí)現(xiàn)(點(diǎn)擊下載):
3.1 根據(jù)授權(quán)碼獲取token
3.1.1 接口詳情
請(qǐng)求URI |
/jitsopen/api/oauth2/v1.0/token |
|||
HTTP Method |
POST |
|||
說明 |
客戶端獲取授權(quán)碼后,服務(wù)端可通過授權(quán)碼向授權(quán)服務(wù)器請(qǐng)求access_token |
|||
請(qǐng)求 |
||||
Header |
值 |
|||
Content-Type |
application/json |
|||
參數(shù) |
類型 |
是否 必需 |
說明 |
|
appId |
字符串 |
必需 |
快應(yīng)用在開放平臺(tái)申請(qǐng)的appId |
|
code |
字符串 |
必需 |
授權(quán)碼 |
|
scope |
字符串 |
必需 |
請(qǐng)求的授權(quán)范圍不能包含任何資源所有者最初未許可的范圍。若省略,被視為與資源所有者最初許可的范圍相同 |
|
timestamp |
長(zhǎng)整型 |
必需 |
時(shí)間戳,當(dāng)前計(jì)算機(jī)時(shí)間和GMT時(shí)間(格林威治時(shí)間)1970年1月1號(hào)0時(shí)0分0秒所差的毫秒數(shù) |
|
sign |
字符串 |
必需 |
簽名,簽名算法見2.4的描述 |
|
成功響應(yīng) |
||||
HTTP狀態(tài)碼 |
200 |
|||
Header |
值 |
說明 |
||
Content-Type |
application/json |
|
||
Cache-Control |
no-store |
|
||
Pragma |
no-cache |
|
||
對(duì)象 |
字段 |
類型 |
是否 必有 |
說明 |
code |
|
字符串 |
必有 |
返回碼,請(qǐng)求成功的話,返回“200” |
msg |
|
字符串 |
可選 |
提示信息 |
data
|
accessToken |
字符串 |
必有 |
授權(quán)服務(wù)器頒發(fā)的訪問令牌 |
tokenType |
字符串 |
必有 |
令牌的類型,大小寫不敏感,目前支持“Bearer” |
|
expiresIn |
長(zhǎng)整型 |
必有 |
token過期時(shí)間,單位:秒 |
|
refreshToken |
字符串 |
可選 |
刷新token |
|
scope |
字符串 |
必有 |
授權(quán)范圍 |
|
openId |
字符串 |
可選 |
標(biāo)識(shí)用戶身份的openId |
|
錯(cuò)誤響應(yīng) |
||||
HTTP狀態(tài)碼 |
200 |
|||
Header |
值 |
說明 |
||
Content-Type |
application/json |
|
||
Cache-Control |
no-store |
|
||
Pragma |
no-cache |
|
||
字段 |
字段 |
類型 |
是否 必有 |
說明 |
code |
|
字符串 |
必有 |
錯(cuò)誤碼 |
msg |
|
字符串 |
必有 |
錯(cuò)誤提示信息 |
data |
|
對(duì)象 |
可選 |
返回的數(shù)據(jù)對(duì)象 |
3.1.2 正常響應(yīng)示例:
{
"code":"200",
"msg": "success",
"data": {
"accessToken":"23fkewhf234lsjgxfaxufkk5f98",
"tokenType": "Bearer",
"expiresIn": 3600,
"refreshToken": "3423fwefwef984234h42323ffsffe",
"scope":"profile",
"openId":""
}
}
3.2 刷新token
3.2.1 接口詳情
請(qǐng)求URI |
/jitsopen/api/oauth2/v1.0/token |
|||
HTTP Method |
POST |
|||
說明 |
服務(wù)端通過前面獲得的refreshToken來刷新token |
|||
請(qǐng)求 |
||||
Header |
值 |
|||
Content-Type |
application/json |
|||
參數(shù) |
類型 |
是否必需 |
說明 |
|
appId |
字符串 |
必需 |
快應(yīng)用在開放平臺(tái)申請(qǐng)的appId |
|
refreshToken |
字符串 |
必需 |
刷新token碼 |
|
scope |
字符串 |
必需 |
請(qǐng)求的授權(quán)范圍不能包含任何資源所有者最初未許可的范圍。若省略,被視為與資源所有者最初許可的范圍相同 |
|
timestamp |
長(zhǎng)整型 |
必需 |
時(shí)間戳,當(dāng)前計(jì)算機(jī)時(shí)間和GMT時(shí)間(格林威治時(shí)間)1970年1月1號(hào)0時(shí)0分0秒所差的毫秒數(shù) |
|
sign |
字符串 |
必需 |
簽名,簽名算法見2.4的描述 |
|
成功響應(yīng) |
||||
HTTP狀態(tài)碼 |
200 |
|||
Header |
值 |
說明 |
||
Content-Type |
application/json |
|
||
Cache-Control |
no-store |
|
||
Pragma |
no-cache |
|
||
對(duì)象 |
字段 |
類型 |
是否必有 |
說明 |
code |
|
字符串 |
必有 |
返回碼,請(qǐng)求成功的話,返回“200” |
msg |
|
字符串 |
可選 |
提示信息 |
data
|
accessToken |
字符串 |
必有 |
授權(quán)服務(wù)器頒發(fā)的訪問令牌 |
tokenType |
字符串 |
必有 |
令牌的類型,大小寫不敏感,目前支持“Bearer” |
|
expiresIn |
長(zhǎng)整型 |
必有 |
token過期時(shí)間,單位:秒 |
|
refreshToken |
字符串 |
可選 |
刷新token |
|
scope |
字符串 |
必有 |
授權(quán)范圍 |
|
openId |
字符串 |
可選 |
標(biāo)識(shí)用戶身份的openId |
|
錯(cuò)誤響應(yīng) |
||||
HTTP狀態(tài)碼 |
200 |
|||
Header |
值 |
說明 |
||
Content-Type |
application/json |
|
||
Cache-Control |
no-store |
|
||
Pragma |
no-cache |
|
||
字段 |
字段 |
類型 |
是否必有 |
說明 |
code |
|
字符串 |
必有 |
錯(cuò)誤碼 |
msg |
|
字符串 |
必有 |
錯(cuò)誤提示信息 |
data |
|
對(duì)象 |
可選 |
返回的數(shù)據(jù)對(duì)象 |
3.2.2 正常響應(yīng)示例:
{
"code":"200",
"msg": "success",
"data": {
"accessToken":"23fkewhf234lsjgxfaxufkk5f98",
"tokenType": "Bearer",
"expiresIn": 3600,
"refreshToken": "3423fwefwef984234h42323ffsffe",
"scope":"profile",
"openId":""
}
}
3.3 獲取用戶基本信息
3.3.1 接口詳情
請(qǐng)求URI |
/jitsopen/api/oauth2/v1.0/userinfo |
|||
HTTP Method |
POST |
|||
說明 |
服務(wù)端通過前面獲得的accessToken來獲取用戶信息 |
|||
請(qǐng)求 |
||||
Header |
值 |
|||
Content-Type |
application/json |
|||
參數(shù) |
類型 |
是否必需 |
說明 |
|
appId |
字符串 |
必需 |
快應(yīng)用在開放平臺(tái)申請(qǐng)的appId |
|
token |
字符串 |
必需 |
accessToken,訪問令牌 |
|
timestamp |
長(zhǎng)整型 |
必需 |
時(shí)間戳,當(dāng)前計(jì)算機(jī)時(shí)間和GMT時(shí)間(格林威治時(shí)間)1970年1月1號(hào)0時(shí)0分0秒所差的毫秒數(shù) |
|
sign |
字符串 |
必需 |
簽名,簽名算法見2.4的描述 |
|
成功響應(yīng) |
||||
HTTP狀態(tài)碼 |
200 |
|||
Header |
值 |
說明 |
||
Content-Type |
application/json |
|
||
Cache-Control |
no-store |
|
||
Pragma |
no-cache |
|
||
對(duì)象 |
字段 |
類型 |
是否必有 |
說明 |
code |
|
字符串 |
必有 |
返回碼,請(qǐng)求成功的話,返回“200” |
msg |
|
字符串 |
可選 |
提示信息 |
data
|
nickName |
昵稱 |
必有 |
授權(quán)服務(wù)器頒發(fā)的訪問令牌 |
avatars |
json對(duì)象 |
必有 |
{ "defaultAvatar" : "https://xxx.xxxx.xxx/a.gif" //默認(rèn)頭像 } |
|
錯(cuò)誤響應(yīng) |
||||
HTTP狀態(tài)碼 |
200 |
|||
Header |
值 |
說明 |
||
Content-Type |
application/json |
|
||
Cache-Control |
no-store |
|
||
Pragma |
no-cache |
|
||
字段 |
字段 |
類型 |
是否必有 |
說明 |
code |
|
字符串 |
必有 |
錯(cuò)誤碼 |
msg |
|
字符串 |
必有 |
錯(cuò)誤提示信息 |
data |
|
對(duì)象 |
可選 |
返回的數(shù)據(jù)對(duì)象 |
3.3.2 正常響應(yīng)示例:
{
"code":"200",
"msg": "success",
"data": {
"nickName":"ksfifa",
"avatars": {
"defaultAvatar" :"https://xxx.xxxx.xxx/a.gif"
}
}
}
更多建議: