2016-08-24 83 views
1

我想註冊新用戶在REST API,並請求應該是這樣:我怎麼發送HTTP標頭「grant_type = client_credentials」

POST /api/oauth/token HTTP/1.1 
 
Content-Type: application/x-www-form-urlencoded 
 
Authorization: Basic YW75cm9pZC12tb28Jp8bGU6c2Vj 
 

 
grant_type=client_credentials&scope=write

問題1:授權碼是靜態的,每次我請求一個新用戶時它必須是相同的,或者我應該每次生成一個新的base46碼?

問2:grant_type ....是一個參數請求或身體(我用身體或作爲參數發送)

提前非常大的感謝!

+0

這些問題需要針對您所使用的公司的API – zerohero

回答

1

問題1:通常情況下,您應該使用公共令牌(本例中爲基本oauth令牌),並且當此令牌過期時,您應該更新它。在你的api的文檔中,它應該存在過期令牌並執行令牌刷新的時間。

問題2:尋找你的信息「grant_type = client_credentials &範圍=寫」這是一個身體PARAM請求(與主體POST請求)

1

首先,從要求代碼,您提供:

POST /api/oauth/token HTTP/1.1 
Content-Type: application/x-www-form-urlencoded 
Authorization: Basic YW75cm9pZC12tb28Jp8bGU6c2Vj 

grant_type=client_credentials&scope=write 

在我看來,該要求是用於獲取客戶端(APP)的訪問令牌(使用OAuth Client Credentials Grant),而不是請求註冊用戶。所以,我在這個假設基礎上回答我的答案。

問題1:授權碼是靜態的它每次我申請一個新的用戶或我應該產生一個新的base46編碼,每次時間必須是一樣的嗎?

OAuth Client Credentials Grant的情況下,報頭Authorization包含客戶端的認證信息(例如,client_idclient_secret)。您通常通過向API提供者註冊您的客戶端(應用程序)來獲取此信息。 所以答案是肯定的,只要信息(client_id/secret)不會改變/過期,它就應該是靜態的。

問題2:該grant_type ....是一個參數請求或體(I應與體或作爲一個參數發送它)

OAuth spec指定grant_type參數寫在HTTP請求實體主體中,所以應該在請求體內發送。但是,有些實現允許在URL中傳遞grant_type參數。