app_id
, app_key
, app_secret
, 對于平臺來說, 需要給你的 你的開發(fā)者賬號分配對應(yīng)的權(quán)限:
-
app_id
是用來標記你的開發(fā)者賬號的, 是你的用戶id, 這個id 在數(shù)據(jù)庫添加檢索, 方便快速查找 -
app_key
和app_secret
是一對出現(xiàn)的賬號, 同一個app_id
可以對應(yīng)多個app_key
+app_secret
, 這樣 平臺就可以分配你不一樣的權(quán)限, 比如 app_key1 + app_secect1 只有只讀權(quán)限 但是 app_key2+app_secret2 有讀寫權(quán)限.. 這樣你就可以把對應(yīng)的權(quán)限 放給不同的開發(fā)者. 其中權(quán)限的配置都是直接跟app_key
做關(guān)聯(lián)的,app_key
也需要添加數(shù)據(jù)庫檢索, 方便快速查找 - 至于為什么 要有
app_key
+app_secret
這種成對出現(xiàn)的機制呢, 因為 要加密, 通常 在首次驗證(類似登錄場景) , 你需要用app_key
(標記要申請的權(quán)限有哪些) +app_secret
(密碼, 表示你真的擁有這個權(quán)限) 來申請一個token
, 就是我們經(jīng)常用到的access_token
, 之后的數(shù)據(jù)請求, 就直接提供access_token
就可以驗證權(quán)限了.
上述3點說的有點多哈, 不知道講明白了沒, 順便再說一下簡化的場景:
- 省去
app_id
, 他默認每一個用戶有且僅有一套權(quán)限配置, 所以直接將app_id
=app_key
, 然后外加一個app_secret
就夠了. - 省去
app_id
和app_key
, 相當于app_id
=app_key
=app_secret
, 通常用于開放性接口的地方, 特別是很多地圖類api 都采用這種模式, 這種模式下, 帶上app_id
的目的僅僅是統(tǒng)計 某一個用戶調(diào)用接口的次數(shù)而已了.
AppID
:應(yīng)用的唯一標識
AppKey
:公匙(相當于賬號)
AppSecret
:私匙(相當于密碼)
token
:令牌(過期失效)
使用方法
向第三方服務(wù)器請求授權(quán)時豹爹,帶上
AppKey
和AppSecret
(需存在服務(wù)器端)第三方服務(wù)器驗證
AppKey
和AppSecret
在DB中有無記錄如果有,生成一串唯一的字符串(
token
令牌)矛纹,返回給服務(wù)器臂聋,服務(wù)器再返回給客戶端客戶端下次請求敏感數(shù)據(jù)時帶上令牌
關(guān)于第一點,可以采用簽名的方式發(fā)送或南,當應(yīng)用服務(wù)端向第三方服務(wù)端發(fā)請求時孩等,帶上
AppKey
、時間戳采够、隨機數(shù)肄方、簽名,簽名可以使用AppSecret
+ 時間戳 + 隨機數(shù)使用sha1生成蹬癌,第三方服務(wù)端收到后权她,生成本地簽名和收到的簽名比對,如果一致冀瓦,校驗成功