LINE Notify / LINE Login 實作小問題整理

最近在評估網站故障的自動通報機制。LINE 在台灣普及率及依賴度都很高,是很適合的即時通知管道,由於只需單向傳送訊息,LINE Notify 免費且無人數上限,實作又比 LINE Bot 單純。去吧,LINE Notify 就決定是你了。

David 老師有篇詳細的教學文,文章用 Postman 示範 API 溝通細節,不難用 WebClient 改寫,即可簡單搞定線上訂閱介面。

流程如下:

  • 針對不同使用者產生專屬URL,例如: httqs://notify-bot.line.me/oauth/authorize?response_type=code&client_id=….&redirect_uri=callback網址&scope=notify&state=使用者身分識別字串
  • 使用者會被導到 LINE App(手機/平板)或是 LINE 登入網頁,同意授權後會被導回指定的 Callback 網址(必須與 LINE 開發設定填寫網址一致)
  • Callback 網址程式收到 code 及 state,以 code 為參數呼叫 httqs://notify-bot.line.me/oauth/token 可取得 access_token,再依 state 判斷使用者身分,將使用者資料及對應 access_token 寫入資料庫,方便日後管理與應用。
  • 要發訊息給指定使用者,由資料庫查詢其 access_token,呼叫 httqs://notify-bot.line.me/api/notify 以發送通知。

順道也測試了 LINE Login,以下整理過程踩過的小坑及眉角:

  • Callback URL 若非 localhost,需使用 https。
  • Callback URL 設定介面說設定會立即生效,實務上要等一兩分鐘較保險,勿心急狂試,還沒生效測不通一直亂改。(對,就是我,性急直逼王藍田)
  • LINE 登入網頁出現 An error has occurred. Please wait a moment and try again. 可能是 client_id 錯誤或失效。
  • 瀏覽器導向 LINE 登入網頁時,在手機平板可以選擇導向「LINE 自動登入」程式或導向登入網頁(如下圖所示)。

    若是在 LINE App 開啟網頁被導到 LINE 登入程序,將自動進入同意畫面。
    感謝網友 Kuan 補充:手機平板瀏覽器導向 LINE自動登入 功能視瀏覽器而定,Chrome 可以,但像 Asus 內建瀏覽器或 iOS Safari 就出現過不支援的狀況。
  • 設定不正確時,登入網頁會出現「無法登入,請稍候再試。」這種模糊訊息,此時可從 URL 找到類似 errorMessage=AUTH_INVALID_REDIRECT_URL&errorCode=400 之類的詳細訊息。
  • 設定不正確時,若導向 LINE 程式會出現「錯誤 無法正確執行」訊息。
  • LINE Login 取得 Access Token 後可取得使用者姓名、照片;LINE Notify 取得 Access Token 後無從識別使用者身份,實務上要由 state 帶入使用者身分以便建立對應。
  • 當 LINE Channl 處於 DEVELOPING 狀態時(未轉為 PUBLISHED),LINE Login 只接受 CHANNEL_EDITOR 及 DEVELOPER 角色成員登入[參考],其餘人員使用登入網頁沒有任何錯誤訊息顯示,只會一直重覆登入網頁(由 URL 偷看訊息為 AUTHENTICATION_FAIL);LINE App 則出現「錯誤 無法正確執行」。
  • Channel 管理介面可將其他測試人員設定成 DEVELOPER。記得 Email 跟 LINE ID 要正確填寫,對方需收 Mail 點連結確認成員關係,完成後,該使用者即可在 DEVELOPING 階段通過 LINE Login 認證。

歡迎推文分享:
Published 30 March 2017 11:07 PM by Jeffrey
Filed under:
Views: 15,777



Comments

# 寶之寶 said on 30 March, 2017 12:38 PM

黑大~~文章內的httqs 是否太累打錯??

# Jeffrey said on 30 March, 2017 05:36 PM

to 寶之寶, 這是本站傳統,為避免無效 URL 被系統或瀏覽器自動加上超連結,會故意將 http/https 改成 httq/httqs,例如:www.google.com.tw/search

# solongin said on 30 March, 2017 10:03 PM

請問黑大

使用者會被導到 LINE App(手機/平板)

是不是需要特別的做法

# Jeffrey said on 30 March, 2017 11:11 PM

to solongin, 不用特別設定,LINE 在登入網頁下了功夫,行動裝置的瀏覽器會自動跳出提示。(請參考文章補充圖例)

# Kuan said on 31 March, 2017 05:27 AM

被導到LINE APP似乎不是每個行動瀏覽器都可以哦。

當初我在做LINE Login的時候,使用ASUS手機內建的瀏覽器是不會有的,要額外裝chrome才有。

ios手機的safari也沒有,也是要額外裝chrome。

但現在Login的API改成version 2,不知還是不是如此。

再補充當初踩到的,如果chrome不是預設瀏覽器,如使用chrome做登入的動作,它的call back會開啟預設瀏覽器..

供參考~~

# Jeffrey said on 31 March, 2017 06:20 AM

to Kuan, 謝謝你的補充,已加入本文。

# Tim said on 05 April, 2017 02:55 AM

請問關於Line Notify 是否有方法是可以讓網頁自動要發送訊息的群組?

經由網頁發送訊息在,在line登入後會自動選擇要發送訊息的群組,跟那個群組連動

# Jeffrey said on 05 April, 2017 06:02 AM

to Tim, LINE Notify可發送1對1通知,使用者也可選擇將LINE Notify加為聊天群組的一員,讓聊天室成員都看到通知。

如要控制發送對象,程式需記錄不同通知對象(個人或聊天室)的Access Token,發送時跑迴圈指定不同對象的AccessToken送出訊息,發送程式放在網頁執行是沒問題的。

# DC said on 05 May, 2017 09:16 AM

你好~我想請問個問題,Line Login取得的Access Token,可以直接用於Line Notify嗎?

另外,我的Line Notify登入後都要選擇1對1訊息或是我所擁有的群組,可是像是IFTTT的連動,他進去只需要按連動即可,而且可以在IFTTT的設定內修改要1對1訊息還是要群組訊息

請問IFTTT是如何拿到群組列表以及Access Token,以及怎麼快速切換不同群組的Access Token?

謝謝您!

# Jeffrey said on 05 May, 2017 11:52 PM

to DC,

LINE Login與LINE Notify的Access Token不能共用。IFTTT官方帳號有要求聊天室列表授權, www.darkthread.net/.../3994-f7b9-o.gif,但我沒找到由聊天室列表項目直接產生LINE Notify Access Token的做法,有可能官方帳號有相關API可用。

Leave a Comment

(required) 
(required) 
(optional)
(required) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

Search

Go

<March 2017>
SunMonTueWedThuFriSat
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

This Blog


Syndication