友だち登録との連携
友だち登録するには、QRコードを読んで登録する流れなどが一般的ですが、LINEログインしたときに同時に友だち登録をさせることも可能です。
友だち登録画面をLINEログイン時に行う
LINEログイン画面で友だち登録をする場合には、図5に示すように2種類の表示方法があります。
この表示方法は、LINEログインのURLを発行する際にbot_promptというパラメータを追加することで可能です。先ほど紹介したコードを、リスト4のようにすることでURLが作成可能です。
$query = http_build_query([ 'response_type' => 'code', 'client_id' => <チャネルID>', 'redirect_uri' => 'http://line-sample.enbind.work/callback', 'state' => $random_uid, 'scope' => 'profile', 'bot_prompt' => 'normal', //(1)追加のパラメータ ]); $url = 'https://access.line.me/oauth2/v2.1/authorize?'.$query;
(1)でbot_promptというパラメータを追加します。値には、normal、またはaggressiveのいずれかを指定します。
この違いは図5で示したとおりで、normalでは認証画面内に「友だち登録」ボタンが追加され、aggressiveでは「友だち登録」画面が追加されます。
実際に連携するBot、つまり「Messaging APIチャネル」は、LINEログインチャネル側でも設定が必要で、図6のようにLINEログインチャネルの設定から「リンクされたボット」で指定して下さい。
友だち登録しているか確認する
LINEログイン時に友だち登録ボタンが表示できても、実際に友だち登録するかは利用者の自由になっています。そのため、実際のサービスでは友だち登録していないとサービスとして成立しない場合や、不都合が生じる場合などがあります。
その場合、利用者が友だち登録しているかを確認する必要があります。これには、友だち関係を取得するAPIを利用します。実際の利用では、プロファイル情報を取得する場合と同じでアクセストークンを取得していることが前提で、リスト5のようにして実行することができます。
$options = [ 'http' => [ 'method' => 'GET', 'header' => [ sprintf('Authorization: Bearer %s',$json['access_token']) ], // (省略) ], // (省略) ]; $response = file_get_contents('https://api.line.me/friendship/v1/status',false,stream_context_create($options)); $json = json_decode($response,true);