iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
自我挑戰組

分享自己的知識及生活管理系統 系列 第 23

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

  • 分享至 

  • xImage
  •  

此文章同步發佈於https://kevinyay945.com/ironman2022/day23

在很多的第三方服務中,都會提供這個流程的串接方式,而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
    就能夠正常的存取需要的內容了

上一篇
建立簡易版imgur - (Authentication pCloud) Day22
下一篇
OAuth2.0介紹 - Implicit Flow (番外篇) Day24
系列文
分享自己的知識及生活管理系統 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言