Day23 OAuth2.0介紹 - Code Flow (番外篇)
在很多的第三方服務中,都會提供這個流程的串接方式,而pCloud也有提供 但這個流程是大致通用的,無論你是要串接line,還是其他支援OAuth的流程,都是類似的
所以在這邊說明大致的角色及過程 在OAuth2.0中會有幾個角色
- 第三方的Auth Server
- 取得授權碼的Server
- 擁有第三方帳號的使用者
關於OAuth2.0有分成兩種流程Code Flow以及Implicit Flow,首先先介紹Code Flow
Code Flow
-
要先在第三方授權單位新增一個auth的app,並且取得裡面的
- Client ID
- Client secret
- 設定redirect url
-
從第三方的文件中找到登入的網址,並且填入下列的變數
- client_id : 填入第一步的Client ID
- response_type : 填入"code"
- redirect_uri : 填入第一步中設定的redirect url
- state : 這個是檢查碼,會在第三步用到
完整填完會像這樣
https://my.pcloud.com/oauth2/authorize?client_id=wKiJ4LgnbkR&response_type=code&redirect_uri=https://c1a1-182-234-38-196.jp.ngrok.io&state=12345
透過瀏覽器查看就會導向到PCloud的登入畫面來進行授權
-
進行登入後,瀏覽器會將網頁redirect到你設定的redirect_uri,並在後面帶上以下參數 https://c1a1-182-234-38-196.jp.ngrok.io/?code=pEHj7Zu9a4c7ZFtNLSaD1uKu5CzCCSL5k5496QzNy&locationid=1&hostname=api.pcloud.com&state=12345
- code : 這個是用來最後跟第三方驗證機構取得access_token的(時效僅有五分鐘)
- state : 用來驗證說這個要求是不是由你這邊發起的(因為redirect_uri在網路上誰都能去拜訪他)
- locationid: pcloud用來記錄你的地區用的
- hostname: pcloud的api位置(此區域為美國的host)
-
去第三方提供的驗證的server提供需要的資料來拿取access_token介紹連結
- host: https://api.pcloud.com/oauth2_token
- 協定: POST
- header:
- Content-Type: x-www-form-urlencoded
- data:
- client_id : 於步驟一取得
- client_secret : 於步驟一取得
- code : 於步驟三取得 送出要求後就會得到以下內容
{
result: 0,
access_token: "dghdghdj",
token_type: "bearer",
uid: 34535
}
就可以取得access_token的內容 接下來,只要再需要的api上除了原本需要的參數,另外再Header上加上
- Authorization: Bearer dghdghdj
就能夠正常的存取需要的內容了