iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

今日主題

在前面的章節中,我們有使用到API key類型的授權方式來使用Postman API,今天的主題OAuth 2.0同樣也是主流常見的API授權形式,遵守這個框架的第三方平台,都能夠很容易地進行整合,像是常見的大平台Google、Facebook、Line等等,都提供所謂的第三方應用存取授權,用以存取放在這些平台上受保護的資料。

註冊 Github 的 OAuth Application

由於今天挑戰需要透過Github的OAuth Application,所以需要參考Creating OAuth App來建立應用程式並取得所需的Client ID以及Client secret,簡易步驟如下

  1. 登入Github
  2. 點擊個人圖像,選擇Settings
  3. 在Settings頁面左邊選項選擇Developer settings
  4. 在"Settings/Developer settings"頁面選擇OAuth Apps並開始註冊新的Oauth app
    • APPlication name 隨意填入,如 test_postman_oauth2
    • Homepage URL 隨意填入,如 https://oauth.pstmn.io
    • Authorization callback URL 根據今日挑戰需求填入
      https://oauth.pstmn.io/v1/browser-callback
  5. 在"Settings/Developer settings/test_postman_oauth2"頁面點擊 generate new client secret,產生的Client secret需要先行保存下來,因為之後就無法從該頁面再次獲取,除非重新產生
  6. 複製Client IDClient secret之後會用到

今日挑戰

在開始之前,記得先把今天的挑戰內容 Day 14: OAuth 給複製到自己的工作區。

回到自己工作區後,打開資料夾OAuth並參考右方的文件內容,根據以下步驟來體驗如何透過Postman來存取Github上的資料:

  • 取得Access token: 因為要取得Github上的資料,所以我們需要先有一把鑰匙。在今天資料夾OAuthAuthroization頁面,填入需要的資料來取得鑰匙

    • Token name: 只是方便我們識別,可以填github oauth
    • Auth URL: 根據Github API文件,這邊需要填入https://github.com/login/oauth/authorize
    • Access Token URL: 根據Github API文件,這邊需要填入https://github.com/login/oauth/access_token
    • Client ID/Client Secret: 這邊就要使用到前面在Github申請的應用程式資料,要特別注意因為是機敏資訊,所以這邊建議不要直接貼上原值,透過set a variable來替代會比較好。

    填好後如下圖

    https://ithelp.ithome.com.tw/upload/images/20220930/20140317jH5YLA8TdX.png

    點擊Get New Access token,完成確認後就能取得access token

    https://ithelp.ithome.com.tw/upload/images/20220930/20140317tIYnXb9ZIs.png

  • 使用access token: 點擊Use Token,就能設定該Collection下都使用該鑰匙,這邊記得也要調整成使用變數來隱藏機敏資料

    https://ithelp.ithome.com.tw/upload/images/20220930/20140317i1u4vkGPjR.png

  • 新增請求: 有了可以存取Github資源的token後,接下來就要直接使用Github的API來試試看

    • 新增請求並重新命名為 github
    • GET https://api.github.com/user/repos
    • 確認Authorization分頁下是Inherit auth from parent,確保能夠繼承到Collection裡定義好的token
    • Headers分頁下打開隱藏的變數,應該要能看到自動繼承了的Bearer {{access_token}}
  • 發送請求: 試著發送,成功的話會回傳Github帳號下所擁有的repo資料

  • 加入測試:

    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    
    // 確認回傳的repo數量,並設定為 collection variable
    var repoCount = pm.response.json().length
    console.log(repoCount)
    pm.collectionVariables.set("repoCount", repoCount)
    
  • 將變數同步化: 打開 Collection 的 Variables 分頁,可以看到執行測試後所新增的變數repoCount,但只有INITIAL VALUE,點擊Persist All來同步所有變數的初始值

到這邊就能夠進行Submit了,通過所有測項就表示今天的挑戰成功囉。

今日回顧

今天體驗如何在Postman使用OAuth token來取得Github上的資料,其實還有很多延伸話題可以分享,像是OAuth 2.0的不同Grant Type,或是安全性問題的探討,不過因為主題還是希望圍繞在Postman本身上,所以其他話題就之後在另開新篇章來分享。

今天的參考資料如下:

那麼今天就到這裡,我們明天見~


上一篇
Postman challenge Day 13 - Newman
下一篇
Postman challenge Day 15 - 輸出檔案 (Write to file)
系列文
[POSTMAN] 該知道的都知道,不知道的慢慢了解 - 與波斯麵三十天的感情培養32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言