Laravel8 LINEのユーザー情報を取得する方法

前準備

Laravel8 LINE公式アカウントを作成しWebhookでLaravelに通知させる方法でLINE公式アカウントの作成とLaravel通知まで行う。

LINEチャネルアクセストークン取得

「Messaging API設定」をクリック。

LINE developersコンソール

ページ1番下のチャネルアクセストークンをコピーしておく。

LINE developers チャネルアクセストークン

Laravel側サンプルコード

LINE Webhook先のLaravelのコントローラーに以下を記述する。
※LINE友だち追加通知時にLINE表示名を取得するサンプルになります。
 既にLINEユーザーIDを知っており、LINE表示名のみ取得したい場合は、_get_user_info($user_id)のみをコールすればOK。

public function notice(Request $request)
{
    $info = $request->all();

    // 通知イベント数分処理
    foreach($info['events'] as $event){
        switch($event['type']){
            case 'follow':  // 友だち登録
                $res = $this->_regist_friend($event);
                break;
            default:
                break;
        }
    }

    return response(null, Response::HTTP_OK);
}

private function _regist_friend($event)
{
    // LINE表示名を取得したいLINEユーザーId抽出
    $user_id = $event['source']['userId'];

    // LINE表示名取得
    $display_name = $this->_get_user_info($user_id);

    // 取得したLINE表示名をDBに保存したりする
    //    ・
    //    ・
    //    ・

    return true;
}

private function _get_user_info($user_id)
{
    $userId = $user_id;
    $accessToken = "取得したLINEのチャネルアクセストークン"

    $headers = [
        'Authorization: Bearer ' . $accessToken,
        'Content-Type: application/json',
    ];

    $ch = curl_init('https://api.line.me/v2/bot/profile/' . $userId);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $result = curl_exec($ch);
    curl_close($ch);

    $response = json_decode($result, true);

    $display_name = $response['displayName']; // ユーザーの表示名

    return $display_name;
}

レスポンスは以下のようなフォーマットです。

array:3 [▼
  "userId" => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  "displayName" => "xxx"
  "language" => "ja"
]

1件のコメント

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です