LINE BOT API 実は友達追加時にもCallbackされてた & 署名確認をしよう。

前回こんな記事を書きました。
田村ゆかりさん公式サイトの通知を LINE BOT API で作ってみた。 #yukarin

この記事では友達追加をしてもらった際にメッセージを送ってもらって
mid(ユーザーID)を保存するという処理だったのですが、友人が
「友達追加時にもCallbackされるからメッセージ送らなくてもmid保存できるよ」と教えてもらいました。

 

試しに中身を覗いてみた

注目するのは “opType”: 4 です。
友達追加時は 4
ブロック時は 8 が返ってきます。

LINE Developers にも記載されてました…。

FireShot Capture 42 - LINE Developers - BOT API - API refere_ - https___developers.line.me_bot-api

 

友達追加時に、midを保存。
ブロック時にmidを削除といったことが可能ですね。

ということでPHPで友達追加時に相手のmidを保存するコードは以下に。

この一々保存するの面倒なので一斉送信できるAPIを公開してくだしゃい

 

ふとコードを書き直してる時にセキュリティやばくね?ってなって思ってた時に署名とかこないの?って思ったら署名乗ってくるみたいですね…。
Qiitaとか9割方、署名確認してないです。

 

LINEからのアクセスか検証する

LINEからのアクセスの場合、ヘッダーに X-LINE-CHANNELSIGNATURE があり
これをbase64デコードしたもの + LINEきたらjsonの内容を LINE BUSINESS CENTER で確認できる ChannelSecret をキーとしたHMAC方式SHA256アルゴリズムのハッシュ値が
合致すればOKということです。

 

ちなみに nginx だとPHPの getallheaders 関数が使えないので

よく見るこんなのを使います。

コメントを残す

メールアドレスが公開されることはありません。