在前面的章節中,我們有使用到API key
類型的授權方式來使用Postman API,今天的主題OAuth 2.0
同樣也是主流常見的API授權形式,遵守這個框架的第三方平台,都能夠很容易地進行整合,像是常見的大平台Google、Facebook、Line等等,都提供所謂的第三方應用存取授權,用以存取放在這些平台上受保護的資料。
由於今天挑戰需要透過Github的OAuth Application,所以需要參考Creating OAuth App來建立應用程式並取得所需的Client ID
以及Client secret
,簡易步驟如下
Settings
Developer settings
OAuth Apps
並開始註冊新的Oauth app
test_postman_oauth2
https://oauth.pstmn.io
https://oauth.pstmn.io/v1/browser-callback
generate new client secret
,產生的Client secret
需要先行保存下來,因為之後就無法從該頁面再次獲取,除非重新產生Client ID
、Client secret
之後會用到在開始之前,記得先把今天的挑戰內容 Day 14: OAuth 給複製到自己的工作區。
回到自己工作區後,打開資料夾OAuth
並參考右方的文件內容,根據以下步驟來體驗如何透過Postman來存取Github上的資料:
取得Access token
: 因為要取得Github上的資料,所以我們需要先有一把鑰匙。在今天資料夾OAuth
的Authroization
頁面,填入需要的資料來取得鑰匙
github oauth
https://github.com/login/oauth/authorize
https://github.com/login/oauth/access_token
set a variable
來替代會比較好。填好後如下圖
點擊Get New Access token
,完成確認後就能取得access token
了
使用access token
: 點擊Use Token
,就能設定該Collection下都使用該鑰匙,這邊記得也要調整成使用變數來隱藏機敏資料
新增請求: 有了可以存取Github資源的token後,接下來就要直接使用Github的API來試試看
github
GET https://api.github.com/user/repos
Authorization
分頁下是Inherit auth from parent
,確保能夠繼承到Collection裡定義好的tokenHeaders
分頁下打開隱藏的變數,應該要能看到自動繼承了的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本身上,所以其他話題就之後在另開新篇章來分享。
今天的參考資料如下:
那麼今天就到這裡,我們明天見~