LINEクローラーがきたことによる問題
LINE Messaging APIを使用してサイトからLINE通知を送ると、
記載されているURLのプレビューを表示するためにLINEクローラーさんがサイトを覗きにくる
これ、ただの画面ならいくらでもどうぞという感じなのだけど...
今回LINEクローラーがアクセスしにきていたのは、「トークン認証画面」
せっかくユーザーにトークン認証のURLを送っても、
ユーザーがアクセスする前にLINEクローラーがやってきてしまう
結果、ユーザーがURLを確認していないのに
自動的に認証完了になってしまうというバグが発生 (許さん...)
なのでLINEクローラーの場合は認証完了にしないように捕獲した
捕獲方法
捕獲方法は簡単、ユーザーエージェント
を取得してLINEクローラーの場合の条件分岐を追加する
LINEクローラーのユーザーエージェントは
「facebookexternalhit/1.1;line-poker/1.0
」なのでこんな感じ
$ua = $request->header('User-Agent');
// LINEクローラーの場合は認証処理をしない
if ($ua === "facebookexternalhit/1.1;line-poker/1.0") {
echo 'トークン認証画面';
exit;
}
// ここから下は従来の認証処理 & 認証完了View表示
LINE Messaging APIを使用してサイトからLINE通知を送った時、
プレビュー表示のためにLINEクローラーがアクセスしにきていたので
それを捕まえたお話