前準備
Laravel8 LINE公式アカウントを作成しWebhookでLaravelに通知させる方法でLINE公式アカウントの作成とLaravel通知まで行う。
LINEチャネルアクセストークン取得
「Messaging API設定」をクリック。
![LINE developersコンソール](https://halfpower.work/wp-content/uploads/2023/08/1-4.png)
ページ1番下のチャネルアクセストークンをコピーしておく。
![LINE developers チャネルアクセストークン](https://halfpower.work/wp-content/uploads/2023/08/2-5.png)
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"
]