# 串接Line Notify步驟記錄 ## 認證流程圖 ```mermaid graph TD A1[使用者] --要求line notify的授權code--> C C[跳轉到line notify介面] --> |還沒登入line|E[登入介面] E --> |登入| F C --> |已登入過|F[選擇要發送的群組介面] C --> |手機會直接取得line app|F[選擇要發送的群組介面] F --> |確認發送對象後 帶上code及state跳轉回設定|G[原本設定畫面] G -.-> |url上會帶有code 及 state 用code去跟line認證後拿到access token 此token可以發送|H[end] ``` ## 1. 首先到 https://notify-bot.line.me/my/services/ 註冊 設定Callback URL之後用email開通後,會拿到 Client ID 與 Client Secret 在網頁上,導向連結到line的網址來取得code 之後再post給line取得access token redirect_uri 必須要和目前傳到line的一樣 ``` location.href = "https://notify-bot.line.me/oauth/authorize?" + "response_type=code" + "&client_id={申請的Client ID}" + "&redirect_uri={回傳網址}" + "&scope=notify" + "&state=abcd"; //自定義String防止CSRF攻擊 ``` User確定後成功,會重新redircet回網址並回傳coke與state, ``` http://localhost:8080/?code={code}&state=abcd ``` code 就是要去跟line申請授權的access token ## 2. 然後透過server 用post方法取得line notify授權token header的 Content-Type 要設定 application/x-www-form-urlencoded ``` POST https://notify-bot.line.me/oauth/token ``` ## 3. 成功後拿到授權token,就可以用來發送notify給user了 ``` POST https://notify-api.line.me/api/notify ``` 這邊注意header 的 Authorization 的value: Bearer後面要加個空白鍵在放token ## 遇到的坑: > 用vue開發的時候,頁面url有#的redircet_url會有錯誤 必須把它轉換成伺服器看得懂的代碼 ( # => %23 ) >送給line api帶入的 Callback URL 必須和返回的一樣才可以 注意url後面的search(?)跟hash(#)都必須相同