用戶在應用1瀏覽、使用的過程當中,涉及到要使用應用2功能的時候,就產生了 oauth
認證!html
如下具體步驟參考的是:Laravel passport OAuth 認證laravel
應用1攜帶以下查詢字符串:數據庫
response_type | client_id | redirect_uri | scope | state |
---|---|---|---|---|
code | xxx | http://app.com/callback | '' | auth |
跳轉到應用2的登陸受權界面,用戶輸入應用2的帳號、密碼進行登陸,登陸後彈出是否對應用1受權。api
若是用戶選擇贊成受權,那麼應用2將生成受權碼並攜帶受權碼跳轉回應用1提供的 redirect_uri
。這個 redirect_uri
中能夠作任意事情,好比保存受權碼,後期再獲取 token
,或者繼續認證步驟,經過受權碼獲取 token
,這邊要注意的是受權碼的有效期!通常受權碼有效期都較短,10min
左右。app
以前都是採起連接跳轉的方式(Get
請求)執行操做,到目前的獲取 token
步驟後應使用 post
方式在服務端經過 curl
完成!!curl
應用1提供以下參數(redirect_uri
要和 A
步驟中的一致!!):post
grant_type | client_id | client_secret | redirect_uri | code |
---|---|---|---|---|
authorization_code | xxx | xxx | http://app.com/callback | xxx |
嚮應用2發起 post
請求獲取 token
,應用2認證相關參數,經過後響應以下數據:url
{ token_type: '' , access_token: 'xxx' , refresh_token: 'xxx' , expire: 'YYYY-MM-DD HH:II:SS' }
應用1獲取數據保存到數據庫。code
應用1調用應用2的 api
,在應用1上提供應用2的服務!server
應用1在請求頭上攜帶:
Authorization: token_type access_token
調用應用2的 api
獲取數據。
get/post
請求方式由實現方肯定,即:應用2。我上面舉的例子中是推薦採用的請求方式,實際請求方式應該根據實現方提供的開發文檔肯定!
client_id 應用id client_secret 應用密鑰 redirect_uri 重定向 uri // 通常還須要提供 app_name 應用名稱 app_url 應用網址 ....等
應用1提早嚮應用2申請提供的