spicato

WEB and GRAPHIC
CREATIVE STUDIO

T.072-424-9827 F.072-424-5923
hello@spicato.com
Ogaito 3-3-2
Kumatori-cho, Osaka, Japan
date
2020.03.06(fri)
views
18396
category
information

【LINE API】LINE APIを使ったユーザー情報の取得

今回は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を使ったユーザー情報の取得(今回)