麥當勞報報 API 分析

2020.12.25 目前麥當勞的 API 已經從 Restful 轉成 WebSocket 的形式,所以該篇文章的方式目前是無法實作的。

麥當勞報報簡單來說就是麥當勞的會員 app,你可以每日在上頭得到一些優惠券,不過是採取簽到的方式領取;也就是說如果今天你忘了登入領取的話,隔天也不會變成有兩種優惠可以領取。

麥當勞報報 API 分析

透過一些工具,我們可以得到麥當勞報報的 API 路徑和內容,其中分成三種 base url

https://api.mcddaily.com.tw

從列表來看,我目前有使用到的是這五個 API

分別是

/verify_member_access_token

驗證 access token 是否還有效

/update_attributes

從內容看不太出來是幹嘛用的,不過我想對於我們而言也沒什麼特別的用途

/get_info

從 Response body 來看的話,算是麥當勞報報登入成功後第一支得呼叫的 API; 裡頭含有 member_info 的資訊為主

/logout

使用 access_token 就可以登出了,不過這邊有個問題是登出後 access_token 並不會過期⋯ 也就是就算我已經呼叫過了登出這支 API,但仍然可以使用原先的 access_token 來打其他 API⋯ 也就是可以做別的事,不用怕 token 登出就無效了

/login_by_fb

就是基本的從 Facebook 取得 token 去換麥當勞報報的 access_token 和使用者資料,基本上看起來 response body 和 /get_info 的一模一樣。

https://api1.mcddaily.com.tw

基本上商業邏輯都在這個 base url 上執行,而我的重點只有一支 API,也是我分析的目的

/lottery/get_item

這就是每天可以呼叫一次來取得每日優惠的 API

https://api2.mcddaily.com.tw

這邊我只有看到一種 API,就是類似 remote config 的那種使用情境,只用來取得一些 config 內容而已,並沒有什麼其他資訊可以得到。

將每日簽到的動作自動化

我在 Heroku 上有一台每天會跑 script 的機器,每天去爬 PTT 的一些內容並整理發送到不同的地方; 檢查並測試了一下麥當勞報報的這個 API,唯一必填的 request body 欄位只有 access_token,那麼就好處理多了!

就再寫個 curl 的 script 每天一起執行,應該就可以了吧?

這幾天跑一下測試再來更新後續!

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus