參考文章
組成成分
- 使用者
- 應用1
- 應用2
流程
使用者在應用1瀏覽、使用的過程中,涉及到要使用應用2功能的時候,就產生了 oauth
認證!
以下具體步驟參考的是:Laravel passport OAuth 認證
A. 登入授權
應用1攜帶如下查詢字串:
response_type | client_id | redirect_uri | scope | state |
---|---|---|---|---|
code | xxx | http://app.com/callback | “ | auth |
跳轉到應用2的登入授權介面,使用者輸入應用2的賬號、密碼進行登入,登入後彈出是否對應用1授權。
B. 生成授權碼
如果使用者選擇同意授權,那麼應用2將生成授權碼並攜帶授權碼跳轉回應用1提供的 redirect_uri
。這個 redirect_uri
中可以做任意事情,比如儲存授權碼,後期再獲取 token
,或者繼續認證步驟,通過授權碼獲取 token
,這邊要注意的是授權碼的有效期!一般授權碼有效期都較短,10min
左右。
C. 獲取 token
之前都是採取連結跳轉的方式(Get
請求)執行操作,到目前的獲取 token
步驟後應使用 post
方式在服務端通過 curl
完成!!
應用1提供如下引數(redirect_uri
要和 A
步驟中的一致!!):
grant_type | client_id | client_secret | redirect_uri | code |
---|---|---|---|---|
authorization_code | xxx | xxx | http://app.com/callback | xxx |
嚮應用2發起 post
請求獲取 token
,應用2認證相關引數,通過後響應如下資料:
{
token_type: `` ,
access_token: `xxx` ,
refresh_token: `xxx` ,
expire: `YYYY-MM-DD HH:II:SS`
}
應用1獲取資料儲存到資料庫。
D. 呼叫
應用1呼叫應用2的 api
,在應用1上提供應用2的服務!
應用1在請求頭上攜帶:
Authorization: token_type access_token
呼叫應用2的 api
獲取資料。
釋疑
get/post 請求方式是如何確定的??
get/post
請求方式由實現方確定,即:應用2。我上面舉的例子中是推薦採用的請求方式,實際請求方式應該根據實現方提供的開發文件確定!
如下欄位是如何獲取的??
client_id 應用id
client_secret 應用金鑰
redirect_uri 重定向 uri
// 一般還需要提供
app_name 應用名稱
app_url 應用網址
....等
應用1提前嚮應用2申請提供的