勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

LINEのURLプレビューを表示させないようPHP側で制御する方法

  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

  関連記事

PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)

PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...

PHPでLINEログイン後「ユーザー名」「ユーザーID」「プロフィール画像URL」「メッセージ」を取得する方法

<a>タグのリンクからページ遷移するとLINEログインし、その後に「 ...