Skip to main content

Day23 OAuth2.0介紹 - Code Flow (番外篇)

在很多的第三方服務中,都會提供這個流程的串接方式,而pCloud也有提供 但這個流程是大致通用的,無論你是要串接line,還是其他支援OAuth的流程,都是類似的

所以在這邊說明大致的角色及過程 在OAuth2.0中會有幾個角色

  1. 第三方的Auth Server
  2. 取得授權碼的Server
  3. 擁有第三方帳號的使用者

關於OAuth2.0有分成兩種流程Code Flow以及Implicit Flow,首先先介紹Code Flow

Code Flow

  1. 要先在第三方授權單位新增一個auth的app,並且取得裡面的

    1. Client ID
    2. Client secret
    3. 設定redirect url
  2. 從第三方的文件中找到登入的網址,並且填入下列的變數

  3. 進行登入後,瀏覽器會將網頁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)
  4. 去第三方提供的驗證的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 就能夠正常的存取需要的內容了