LINEのURLプレビューを表示させないようPHP側で制御する方法
公開中の特定のページのみLINEのURLプレビューを表示させないよう制御したいという要望を受けた。公開中なので当然basic認証はかかっておらず、また会員制サイトでもないためログイン不要で全ユーザが閲覧可能なページとなる。調べたところ特定のユーザーエージェントの場合にページ終了処理を挟めば良さそう。以下に対応方法をメモ
目次
対応方法
ソースコード
<?php if( $_SERVER['HTTP_USER_AGENT'] == 'facebookexternalhit/1.1;line-poker/1.0' || $_SERVER['HTTP_USER_AGENT'] == 'RCSAndrd/3.1.12' || $_SERVER['HTTP_USER_AGENT'] == 'okhttp/3.12.5' || strpos($_SERVER['HTTP_USER_AGENT'],'facebookexternalhit') !== false ){ exit(); } ?>
その他
アプリ側でURLプレビューの設定をする場合
以下公式案内の通り「ホーム→設定→トーク→URLプレビュー」で設定できるみたい。
https://help.line.me/line/ios/?contentId=20005811&lang=ja
ただ、これは恐らくだけどAさんが上記設定を行った上でBさんにURLを送った際にURLプレビューは表示されないものの、この設定を行っていないBさんがCさんにURLを送った場合はURLプレビューが表示されるんじゃないかと思う。なのでPHP側で制御した。
OGP設定をしていない場合はどうなるのか
OGP設定をせずtitleタグ / metaのdescriptionタグを設定したページのURLを送信した場合、「titleタグ / metaのdescriptionタグ」を読み取ってURLプレビューが展開された。
Basic認証をかけたページの場合はどうなるのか
OGP設定もtitleタグ / metaのdescriptionタグも読み取れないためかURLプレビューは展開されなかった。
関連記事
-
PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)
PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...
-
PHPでLINEログイン後「ユーザー名」「ユーザーID」「プロフィール画像URL」「メッセージ」を取得する方法
<a>タグのリンクからページ遷移するとLINEログインし、その後に「 ...