
今回はLINE APIを使ったユーザー情報の取得方法をご紹介します。
ユーザー情報を取得するためには、
1:LINEログインで認可コードを取得
2:認可コードを使いアクセストークンを取得
3:アクセストークンを使いユーザープロフィールを取得
とすることでユーザー情報が取得できます。
LINEログインで認可コードを取得
ユーザーがLINEログインでログインをすると、指定したURLにリダイレクトされますが、その際、URLに「code」「state」「friendship_status_changed」のパラメータが含まれます。
https://client.example.org/cb?code=abcd1234&state=0987poi&friendship_status_changed=true
codeパラメータがアクセストークンを取得するのに必要な認可コードです。
認可コードを使いアクセストークンを取得
認可コードは「https://api.line.me/oauth2/v2.1/token」に認可コードを指定し、HTTP POSTリクエストすることで取得できます。
$data = [
'grant_type' => 'authorization_code',
'code' => $_GET['code'],
'redirect_uri' => 'xxx',
'client_id' => 'yyy',
'client_secret' => 'zzz'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, 'Content-Type: application/x-www-form-urlencoded');
curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/oauth2/v2.1/token');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$json = json_decode($response);
$accessToken = $json->access_token;
アクセストークンを使いユーザープロフィールを取得
ユーザープロフィールを取得するには「https://api.line.me/v2/profile」にアクセストークンを指定し、HTTP GETリクエストすることで取得できます。
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer ' . $accessToken));
curl_setopt($ch, CURLOPT_URL, 'https://api.line.me/v2/profile');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$userdata = json_decode($response);
$userName = $userdata -> displayName; //表示名
$userId = $userdata -> userId; //ユーザーID
$userIcon = $userdata -> pictureUrl; //プロフィール画像URL
以上でLINEユーザープロフィールが取得できました。
次回はmessage apiを使ってユーザーにメッセージを送りたいと思います。
【ドキュメント】
Social API:https://developers.line.biz/ja/docs/social-api/getting-user-profiles/
LINE ログイン:https://developers.line.biz/ja/docs/line-login/integrate-line-login/
LINE APIシリーズ
Vol.1 WEBサイトにLINEログインを組み込む
Vol.2 LINE APIを使ったユーザー情報の取得(今回)