如何讓使用者訂閱你的Notify服務
若是在測試環境開發,Line呼叫callback url時可能會無法連到你的測試網站,這時候可以借助ngrok來讓你的測試網站可以被外部存取。
用HttpGet呼叫使用者綁定API
https://notify-bot.line.me/oauth/authorize
參數:
- response_type: 固定給"code"。
- client_id: 填入你在申請Notify服務時拿到的Client ID。
- redirect_uri: 填入你要接收Line回傳code跟state的url,必須要與申請服務時填的Callback URL相同。
- scope: 固定給"notify"。
- state: 用來防止CRSF攻擊用的token,帶入的值會在callback時回傳給你。
- response_mode: 若不加這項的話,在完成綁定時Line會redirect到前面填的redirect_uri,code與state會串在url中作為參數,官方不建議用這方式。填入"form_post"時,Line會改用HttpPost呼叫前面填的redirect_uri。
完整的網址會長這樣
https://notify-bot.line.me/oauth/authorize?response_type=code&scope=notify&response_mode=form_post&client_id=(你的Client ID)&redirect_uri=(你的Callback URL)&state=(你的系統產生的token)
使用者點擊網址後會被導到Line登入畫面,之後可以選擇要用哪個聊天室接收通知。
同意後綁定的聊天室就會收到綁定成功的通知
前面提到response_mode的部分,若不加這個參數使用redirect的話,收到的request會長這樣
若使用form_post的話request是長這樣
之後code要用來取得access_token後,傳送通知給使用者。另外要注意的是code是一次性的,用過就不能再用。
參考資料: