# LINE Profile+

オプション機能を利用するには手続きが必要です

本ドキュメントに記載の機能は、所定の申請等を行った法人ユーザーのみがご利用いただけます。LINE Profile+に登録されている情報を、LINEログインやLIFFアプリ、LINEミニアプリで取得してご利用になりたいお客様は、担当営業までご連絡いただくか、弊社パートナー (opens new window)にお問い合わせください。

LINE Profile+は、LINEユーザーのプロフィール情報を管理するサービスです。ユーザーがLINE Profile+に登録した情報(氏名、性別、誕生日、住所、電話番号)は、通常のプロフィール情報とは異なり、所定の申請等を行った法人ユーザーのみが取得できます。

# LINE Profile+に登録されている情報を取得する

LIFFアプリおよびLINEミニアプリを利用するか、ご自身のウェブアプリにLINEログインを組み込むことで、LINE Profile+に登録されている情報を取得できます。

それぞれ以下の手順で、取得したい情報のスコープを指定し、LINE Profile+の情報を含むIDトークンのペイロードを取得します。

手順 LIFFアプリおよびLINEミニアプリで取得する場合 LINEログインで取得する場合
1. スコープを指定する LINE Developersコンソールでスコープを指定する 認可URLにスコープを指定する
2. IDトークンのペイロードを取得する liff.getDecodedIDToken()でIDトークンのペイロードを取得する アクセストークン発行時に取得したIDトークンを検証してIDトークンのペイロードを取得する
3. LINE Profile+の情報を取得する IDトークンのペイロードからLINE Profile+の情報を取得する IDトークンのペイロードからLINE Profile+の情報を取得する

# LIFFアプリおよびLINEミニアプリで取得する場合

LIFFアプリおよびLINEミニアプリでLINE Profile+の情報を取得する場合は、事前にLINE Developersコンソールで取得したい情報のスコープを指定してから、IDトークンのペイロードを取得すると、ログイン中のユーザーのLINE Profile+の情報を取得できます。

# 1. LINE Developersコンソールでスコープを指定する

事前に取得したい情報のスコープを指定します。LINE Developersコンソールで対象のチャネルを選択し、[LIFF]タブの[Scope]セクションで使用したいスコープにチェックを入れます。

LINE Profile+で取得できるスコープの種類について詳しくは、「LINE Profile+のスコープの種類」を参照してください。

profile plus scope

openidを同時に指定してください

LINE Profile+に登録されている情報を取得するには、IDトークンを利用するため、IDトークンを取得する権限を要求するopenidも同時に指定してください。

# 2. liff.getDecodedIDToken()でIDトークンのペイロードを取得する

LIFF SDKのliff.getDecodedIDToken()メソッドを実行すると、LIFFアプリおよびLINEミニアプリにログイン中のユーザーのLINE Profile+の情報を含むデコードされたIDトークンのペイロードを取得できます。

IDトークンのペイロードを取得するコードの例:

liff.init(() => {
  const idToken = liff.getDecodedIDToken();
  console.log(idToken); // print decoded idToken object
});

# 3. IDトークンのペイロードからLINE Profile+の情報を取得する

手順2で取得したIDトークンのペイロードに含まれたLINE Profile+の情報を確認します。

LINE Profile+の情報の例:

"given_name": "ライン",
"middle_name": "L",
"family_name": "太郎",
"gender": "male",
"birthdate": "1990-01-01",
"phone_number": "+81901111....",
"address": {
    "postal_code": "1028282",
    "region": "東京都",
    "locality": "千代田区紀尾井町",
    "street_address": "1番3号",
    "country": "JP"
}

IDトークンに含まれるLINE Profile+の情報について詳しくは、「IDトークンに含まれるLINE Profile+の情報」を参照してください。

# LINEログインで取得する場合

ウェブアプリにLINEログイン v2.1を組み込んで、IDトークンを利用することで、LINE Profile+に登録されている情報を取得できます。

このページでは、LINE Profile+を利用するための追加情報のみを説明しています。LINEログイン v2.1を組み込む方法について詳しくは、「ウェブアプリにLINEログインを組み込む」を参照してください。

注意

LINEログイン v2.0以前のバージョンでは、LINE Profile+は利用できません。

# 1. 認可URLにスコープを指定する

認可URLのscopeパラメータに専用のスコープを指定します。

LINE Profile+で取得できるスコープの種類について詳しくは、「LINE Profile+のスコープの種類」を参照してください。

クエリパラメータにLINE Profile+のスコープを指定した認可URLの例:

https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=1234567890&redirect_uri=https%3A%2F%2Fexample.com%2Fauth%3Fkey%3Dvalue&state=123abc&scope=openid%20profile%20real_name%20gender%20birthdate%20phone%20address&bot_prompt=normal&nonce=0987654asd
openidを同時に指定してください

LINE Profile+に登録されている情報を取得するには、IDトークンを利用するため、IDトークンを取得する権限を要求するopenidも同時に指定してください。

ユーザーが認可URLにアクセスしてからの動作については、「ユーザーがユーザー認証を行う」を参照してください。

# 2. アクセストークン発行時に取得したIDトークンを検証してIDトークンのペイロードを取得する

LINE Profile+に登録されている情報は、IDトークンに含まれます。IDトークンは、アクセストークンを発行したときにレスポンスに含まれます。

リクエストの例:

curl -v -X POST https://api.line.me/oauth2/v2.1/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code' \
-d 'code=b5fd32eacc791df' \
--data-urlencode 'redirect_uri=https://example.com/auth?key=value' \
-d 'client_id=12345' \
-d 'client_secret=d6524edacc8742aeedf98f'

アクセストークンの発行で取得したIDトークンはBase64形式でエンコード(例:eyJhbGciOiJIUzI1NiJ9...)されています。IDトークンの検証を実行することで、JSON形式にデコードされたIDトークンのペイロードを取得できます。

リクエストの例:

curl -v -X POST 'https://api.line.me/oauth2/v2.1/verify' \
 -d 'id_token=eyJraWQiOiIxNmUwNGQ0ZTU2NzgzYTc5MmRjYjQ2ODRkOD...' \
 -d 'client_id=1234567890'

# 3. IDトークンのペイロードからLINE Profile+の情報を取得する

手順2で取得したIDトークンのペイロードに含まれたLINE Profile+の情報を確認します。

LINE Profile+の情報の例:

"given_name": "ライン",
"middle_name": "L",
"family_name": "太郎",
"gender": "male",
"birthdate": "1990-01-01",
"phone_number": "+81901111....",
"address": {
    "postal_code": "1028282",
    "region": "東京都",
    "locality": "千代田区紀尾井町",
    "street_address": "1番3号",
    "country": "JP"
}

IDトークンに含まれるLINE Profile+の情報について詳しくは、「IDトークンに含まれるLINE Profile+の情報」を参照してください。

# LINE Profile+のスコープの種類

LINE Profile+で取得できる情報のスコープの種類は以下のとおりです。

  • real_name:ユーザーが登録した「氏名」を取得する権限
  • gender:ユーザーが登録した「性別」を取得する権限
  • birthdate: ユーザーが登録した「誕生日」を取得する権限
  • phone:ユーザーが登録した「電話番号」を取得する権限
  • address:ユーザーが登録した「住所」を取得する権限
注意

利用するスコープは、あらかじめ申請していただく必要があります。

# IDトークンに含まれるLINE Profile+の情報

LIFFアプリおよびLINEミニアプリやLINEログインで取得したIDトークンには、LINE Profile+の指定したスコープの情報がペイロードに含まれています。

# ペイロード

LINE Profile+を利用しているときは、IDトークンに以下のプロパティが追加されます。

プロパティ タイプ 説明 認可が必要なスコープ
given_name String 氏名の「名」 real_name
given_name_pronunciation String 氏名の「名」のカナ。カタカナです。 real_name
middle_name String ミドルネーム real_name
family_name String 氏名の「姓」 real_name
family_name_pronunciation String 氏名の「姓」のカナ。カタカナです。 real_name
gender String "male"、"female"、もしくはユーザーが独自に入力した値 gender
birthdate String 誕生日。形式は、RFC3339プロトコル (opens new window)で定義されています。 birthdate
phone_number String 電話番号。形式は、E.164で定義されています。 phone
address Object 住所オブジェクト address
# 住所オブジェクト

LINE Profile+には、最大10件の住所を登録できます。IDトークンには、最近更新または利用された住所を1件のみ取得できます。

フィールド タイプ 説明
postal_code String 郵便番号。ハイフンなしの半角数字です。オプション項目のため空の場合もあります。
region String 都道府県
locality String 市区町村
street_address String 「番地」および「その他」に入力した値。「番地」と「その他」は改行コード(\n)で区切られます。オプション項目のため空の場合もあります。
country String 国名。表記はISO 3166-1 alpha-2です。

# ペイロードの例

{
  "iss": "https://access.line.me",
  "sub": "U272cada9c6f4c0c933b0713bc2f90f68",
  "aud": "1234567890",
  "exp": 1513142487,
  "iat": 1513138887,
  "name": "LINE taro",
  "picture": "https://profile.line-scdn.net/0h8pWWElvzZ19qLk3ywQYYCFZraTIdAGEXEhx9ak56MDxDHiUIVEEsPBspMG1EGSEPAk4uP01t0m5G",
  "given_name": "ライン",
  "middle_name": "L",
  "family_name": "太郎",
  "gender": "male",
  "birthdate": "1990-01-01",
  "phone_number": "+81901111....",
  "address": {
    "postal_code": "1028282",
    "region": "東京都",
    "locality": "千代田区紀尾井町",
    "street_address": "1番3号",
    "country": "JP"
  }
}