Type something to search...
玩玩看 KKBOX 與 Spotify 的 OAuth 2.0

玩玩看 KKBOX 與 Spotify 的 OAuth 2.0

  • Web
  • 19 Sep, 2020

心血來潮想玩看看 KKBOX 的 Open API,也一起測試了 Spotify 的部分。這次主要是試試看 OAuth 2.0 Authorization Code Flow 的授權流程,過程都是利用 Postman 來操作。

實驗流程

  • 到 KKBOX/Spotify 開發者頁面,新增一個應用程式,取得一組 client id 跟 client secret,並設定 redirect uri。
  • 取得使用者的授權 KKBOX: GET https://account.kkbox.com/oauth2/authorize

Spotify: GET https://accounts.spotify.com/authorize

將需要的 request 參數(client_idredirect_uriresponse_type 等等)組一組,貼到瀏覽器,就可以導到 KKBOX/Spotify 應用程式授權的畫面,登入並同意後就會導向被到應用程式指定的 redirect_uri,我是亂填一個網址: http://localhost:3000。雖然導向的網址網頁不存在,但是主要是要拿網址上帶的 code 參數,可以拿來下一階段使用。

  1. 利用 code 取得 access token

KKBOX: POST https://account.kkbox.com/oauth2/token

Spotify: POST https://accounts.spotify.com/api/token

POST request 要帶上剛剛取得的 code,並設定一些參數(grant_typeclient_idclient_secret 等等),可以從 response 取得 access_token

  1. access_token 可以拿來當成 API 的 Bearer Token

KKBOX: GET https://api.kkbox.com/v1.1/me

Spotify: GET https://api.spotify.com/v1/me

可以成功取得用戶資料

額外觀察

  • KKBOX 沒有後台可以讓使用者取消應用程式的授權
Tags :
Share :

Related Posts

Fetch API 沒有傳送 cookies
Fetch API 沒有傳送 cookies

最近遇到一個案例,用戶明明有登入,但是打 API 時,卻因為沒有登入而噴錯。 在追查 HTTP Request/Response 時,眼尖的同事發現 Request Headers 根本沒有帶上 cookies,所以伺服器因為沒有 session 登入的資訊,所以才會當成 Client 端還沒登入。但奇怪的是 Client 端的網頁明明就是登入狀態。還有另一個線索是用戶的 Chrome 瀏覽器是

read more
Chrome, AWS S3 and CORS
Chrome, AWS S3 and CORS

前陣子與公司的其他夥伴一起找出了偶發的 CORS 原因,紀錄一下 如果一個網站內有包含對同一個 URL 的載入,但是有兩種方式,一種是從 HTML document 載入,另一種是用 xhr 存取,並且 Chome 有開啟 cache,就有可能會遇到。 重現問題 例如下面這個簡單的範例,用兩種方式從 AWS cloudfont 抓取圖片,CDN 的來源是 AWS S3

read more
玩玩看 Spotify 的 Authorization Code Flow with PKCE
玩玩看 Spotify 的 Authorization Code Flow with PKCE

看到 Spotify 有支援另外一種 Authorization Code Flow,叫做 Authorization Code Flow with Proof Key for Code Exchange (PKCE),來玩玩看 Authorization Code Flow with PKCE 跟 Authorization Code Flow 的差異在於。為了怕使用者的 code 被中間人竊

read more