# LINEログイン v2.1 APIリファレンス

# 共通仕様

# レート制限

LINEログインのAPIに対して短時間に大量のリクエストを送信し、LINEプラットフォームの動作に影響を与えると判断された場合、一時的にリクエストを制限することがあります。負荷テストを含め、いかなる目的でも大量のリクエストを送信しないでください。

レート制限のしきい値について

LINEログインのAPIにおけるレート制限のしきい値は開示していません。

# ステータスコード

APIコールの後で、以下のHTTPステータスコードが返されます。ステータスコードの説明は、特に断りがない限り、HTTP status code specification (opens new window)に準拠しています。

ステータスコード 説明
200 OK リクエストが成功しました。
400 Bad Request リクエストに問題があります。リクエストパラメータとJSONの形式を確認してください。
401 Unauthorized Authorizationヘッダーを正しく送信していることを確認してください。
403 Forbidden APIを使用する権限がありません。ご契約中のプランやアカウントに付与されている権限を確認してください。
413 Payload Too Large リクエストのサイズが上限の2MBを超えています。リクエストのサイズを2MB以下にしてリクエストしなおしてください。
429 Too Many Requests 大量のリクエストでレート制限を超過したため、一時的にリクエストを制限しています。
500 Internal Server Error APIサーバーの一時的なエラーです。

# レスポンスヘッダー

LINEログインAPIのレスポンスには、以下のHTTPヘッダーが含まれます。

レスポンスヘッダー 説明
x-line-request-id リクエストID。各リクエストごとに発行されるIDです。

# OAuth

# アクセストークンを発行する

POST https://api.line.me/oauth2/v2.1/token

アクセストークンを発行します。

LINEログインAPIで管理するアクセストークンは、LINEプラットフォームに保存されているユーザー情報(例:ユーザーID、表示名、プロフィール画像、およびステータスメッセージ)を利用することを、アプリが許可されていることを示します。

レスポンスに含まれるアクセストークンとリフレッシュトークンは、LINEログインAPIを呼び出す際に必要です。

注意
  • ここでは、LINEログイン v2.1のエンドポイントについて解説します。v2.0については、v2.0の「アクセストークンを発行する」を参照してください。
  • LINEログイン機能に追加または変更があったときに、レスポンスやIDトークンのJSONオブジェクトの構造が変更される場合があります。この変更には、プロパティの追加、順序の変更、データの要素間の空白や改行の有無、データ長の変化が含まれます。将来、従来と異なる構造のペイロードを受信しても不具合が発生しないように、サーバーを実装してください。

リクエストの例

# リクエストヘッダー

Content-Type

必須

application/x-www-form-urlencoded

# リクエストボディ

grant_type

String

必須

authorization_code

code

String

必須

LINEプラットフォームから受け取った認可コード

redirect_uri

String

必須

認可リクエスト時に指定したredirect_uriと同じ値

client_id

String

必須

チャネルID。LINE Developersコンソールで確認できます。

client_secret

String

必須

チャネルシークレット。LINE Developersコンソールで確認できます。

code_verifier

String

任意

半角英数字および記号からなる43〜128文字のランダムな文字列(例:wJKN8qz5t8SSI9lMFhBB6qwNkQBkuPZoCxzRhwLRUo1)。
LINEログインがPKCEを実装している場合、本パラメータを加えることで、LINEプラットフォーム側でcode_verifierの有効性を検証したうえでアクセストークンを返却します。
PKCEの実装方法について詳しくは、『LINEログインドキュメント』の「LINEログインにPKCEを実装する」を参照してください。

# レスポンス

ステータスコード200と以下の情報を含むJSONオブジェクトを返します。

access_token

String

アクセストークン。有効期間は30日です。

expires_in

Number

アクセストークンの有効期限が切れるまでの秒数

id_token

String

ユーザー情報を含むJSONウェブトークン(JWT) (opens new window)。このプロパティは、スコープにopenidを指定した場合にのみ返されます。IDトークンについて詳しくは、「IDトークンからプロフィール情報を取得する」を参照してください。

refresh_token

String

新しいアクセストークンを取得するためのトークン(リフレッシュトークン)。アクセストークンが発行されてから90日間有効です。

詳しくは、「アクセストークンを更新する」を参照してください。

scope

String

アクセストークンに付与されている権限。スコープについて詳しくは、「スコープ」を参照してください。

注意:emailスコープは権限が付与されていてもscopeプロパティの値としては返されません。

token_type

String

Bearer

レスポンスの例

# アクセストークンの有効性を検証する

アクセストークンの有効性を検証します。

アクセストークンを利用して、安全にユーザー登録およびログインを処理する方法については、『LINEログインドキュメント』の「アプリとサーバーの間で安全なログインプロセスを構築する」を参照してください。

注意

ここでは、LINEログイン v2.1のエンドポイントについて解説します。v2.0については、v2.0の「アクセストークンの有効性を検証する」を参照してください。

リクエストの例

# HTTPリクエスト

GET https://api.line.me/oauth2/v2.1/verify

# クエリパラメータ

access_token

必須

アクセストークン

# レスポンス

アクセストークンが有効である場合は、HTTPステータスコード 200 OK と、以下の情報を含むJSONオブジェクトが返されます。

scope

String

アクセストークンに付与されている権限。スコープについて詳しくは、「スコープ」を参照してください。

client_id

String

アクセストークンが発行されたチャネルID

expires_in

Number

アクセストークンの有効期限が切れるまでの秒数

レスポンスの例

# エラーレスポンス

アクセストークンの有効期限が切れている場合は、HTTPステータスコード 400 Bad Request と、JSONオブジェクトが返されます。

エラーレスポンスの例

# アクセストークンを更新する

リフレッシュトークンを使って新しいアクセストークンを取得できます。ユーザーの認証が終わったときに、アクセストークンと共にリフレッシュトークンが返されます。

注意
  • ここでは、LINEログイン v2.1のエンドポイントについて解説します。v2.0については、v2.0の「アクセストークンを更新する」を参照してください。
  • Messaging APIで使用されるチャネルアクセストークンの更新には使用できません。

リクエストの例

# HTTPリクエスト

POST https://api.line.me/oauth2/v2.1/token

# リクエストヘッダー

Content-Type

必須

application/x-www-form-urlencoded

# リクエストボディ

grant_type

String

必須

refresh_token

refresh_token

String

必須

再発行するアクセストークンに対応するリフレッシュトークン。アクセストークンが発行されてから最長90日間有効です。リフレッシュトークンの有効期限が切れた場合は、ユーザーに再度ログインを要求して新しいアクセストークンを生成する必要があります。

client_id

String

必須

チャネルID。LINE Developersコンソールで確認できます。

client_secret

String

説明を参照

チャネルシークレット。LINE Developersコンソールで確認できます。

  • アプリタイプが[ウェブアプリ]のみのチャネルでは必須です
  • アプリタイプが[ネイティブアプリ]かつ[ウェブアプリ]のチャネルでは無視されます
  • アプリタイプが[ネイティブアプリ]のみのチャネルでは無視されます

# レスポンス

アクセストークンの更新が成功すると、新しいアクセストークンとリフレッシュトークンが返されます。

access_token

String

アクセストークン。有効期間は30日です。

token_type

String

Bearer

refresh_token

String

リクエスト時にrefresh_tokenプロパティで指定したリフレッシュトークン。新しいアクセストークンを取得しても、リフレッシュトークンの有効期限は延長されません。

expires_in

Number

アクセストークンの有効期限。APIが呼び出された時点から期限切れまでの残り秒数で表されます。

scope

String

アクセストークンに付与されている権限。スコープについて詳しくは、「スコープ」を参照してください。

レスポンスの例

# エラーレスポンス

リフレッシュトークンの有効期限が切れている場合は、HTTPステータスコード 400 Bad Request と、JSONオブジェクトが返されます。

エラーレスポンスの例

# アクセストークンを取り消す

ユーザーのアクセストークンを無効にします。

注意
  • ここでは、LINEログイン v2.1のエンドポイントについて解説します。v2.0については、v2.0の「アクセストークンを取り消す」を参照してください。
  • Messaging APIで使用されるチャネルアクセストークンの無効化には使用できません。

リクエストの例

# HTTPリクエスト

POST https://api.line.me/oauth2/v2.1/revoke

# リクエストヘッダー

Content-Type

必須

application/x-www-form-urlencoded

# リクエストボディ

access_token

String

必須

アクセストークン

client_id

String

必須

チャネルID。LINE Developersコンソールで確認できます。

client_secret

String

説明を参照

チャネルシークレット。LINE Developersコンソールで確認できます。

  • アプリタイプが[ウェブアプリ]のみのチャネルでは必須です
  • アプリタイプが[ネイティブアプリ]かつ[ウェブアプリ]のチャネルでは無視されます
  • アプリタイプが[ネイティブアプリ]のみのチャネルでは無視されます

# レスポンス

ステータスコード200と空のレスポンスボディを返します。

# IDトークンを検証する

IDトークンは、ユーザー情報を含むJSONウェブトークン(JWT)です。受信したIDトークンは、なりすましを狙った攻撃者が発行している可能性があります。受信したIDトークンが正規のものであることを確認し、ユーザーのプロフィール情報とメールアドレスを取得します。

リクエストの例

# HTTPリクエスト

POST https://api.line.me/oauth2/v2.1/verify

# リクエストヘッダー

Content-Type

必須

application/x-www-form-urlencoded

# リクエストボディ

id_token

String

必須

IDトークン

client_id

String

必須

期待されるチャネルID。LINEプラットフォームが発行した、チャネル固有の識別子。LINE Developersコンソールで確認できます。

nonce

String

任意

期待されるnonceの値。認可リクエストに指定したnonceの値を指定します。認可リクエストでnonceの値を指定しなかった場合は省略します。

user_id

String

任意

期待されるユーザーID。ユーザーIDを取得する方法は、「ユーザープロフィールを取得する」を参照してください。

# レスポンス

IDトークンの検証に成功した場合は、IDトークンのペイロード部分が返されます。

iss

String

IDトークンの生成URL

sub

String

IDトークンの対象ユーザーID

aud

String

チャネルID

exp

Number

IDトークンの有効期限。UNIXタイムです。

iat

Number

IDトークンの生成時間。UNIXタイムです。

auth_time

Number

ユーザー認証時間。UNIXタイムです。認可リクエストにmax_ageの値を指定しなかった場合は含まれません。

nonce

String

認可URLに指定したnonceの値。認可リクエストにnonceの値を指定しなかった場合は含まれません。

amr

Stringの配列

ユーザーが使用した認証方法のリスト。特定の条件下ではペイロードに含まれません。

以下のいずれかの値が含まれます。

  • pwd:メールアドレスとパスワードによるログイン
  • lineautologin:LINEによる自動ログイン(LINE SDKを使用した場合も含む)
  • lineqr:QRコードによるログイン
  • linesso:シングルサインオンによるログイン
  • mfa:2要素認証によるログイン

name

String

ユーザーの表示名。認可リクエストにprofileスコープを指定しなかった場合は含まれません。

picture

String

ユーザープロフィールの画像URL。認可リクエストにprofileスコープを指定しなかった場合は含まれません。

email

String

ユーザーのメールアドレス。認可リクエストにemailスコープを指定しなかった場合は含まれません。

レスポンスの例

# エラーレスポンス

IDトークンの検証に失敗した場合は、JSONオブジェクトが返されます。

error_description 説明
Invalid IdToken. IDトークンの形式が正しくないか、署名が無効です。
Invalid IdToken Issuer. IDトークンが "https://access.line.me" 以外のサイトで生成されました。
IdToken expired. IDトークンの有効期限が切れました。
Invalid IdToken Audience. IDトークンのAudienceが、リクエストで指定したclient_idと異なります。
Invalid IdToken Nonce. IDトークンのNonceが、リクエストで指定したnonceと異なります。
Invalid IdToken Subject Identifier. IDトークンのSubjectIdentifierは、リクエストで指定したuser_idと異なります。

エラーレスポンスの例

# ユーザー情報を取得する

ユーザーのユーザーID、表示名、プロフィール画像を取得します。「ユーザープロフィールを取得する」エンドポイントとは、アクセストークンに必要なスコープが異なります。

注意

openidのスコープを持つアクセストークンが必要です。詳しくは、『LINEログインドキュメント』の「ユーザーに認証と認可を要求する」と「スコープ」を参照してください。

リクエストの例

# HTTPリクエスト

GET https://api.line.me/oauth2/v2.1/userinfo

POST https://api.line.me/oauth2/v2.1/userinfo

# リクエストヘッダー

Authorization

必須

Bearer {access token}

# レスポンス

sub

String

ユーザーID

name

String

ユーザーの表示名。認可リクエストにprofileスコープを指定しなかった場合は含まれません。

picture

String

ユーザープロフィールの画像URL。認可リクエストにprofileスコープを指定しなかった場合は含まれません。

レスポンスの例

# プロフィール

# ユーザープロフィールを取得する

ユーザーのユーザーID、表示名、プロフィール画像、およびステータスメッセージを取得します。「ユーザー情報を取得する」エンドポイントとは、アクセストークンに必要なスコープが異なります。

注意

profileのスコープを持つアクセストークンが必要です。詳しくは、『LINEログインドキュメント』の「ユーザーに認証と認可を要求する」と「スコープ」を参照してください。

リクエストの例

# HTTPリクエスト

GET https://api.line.me/v2/profile

# リクエストヘッダー

Authorization

必須

Bearer {access token}

# レスポンス

userId

String

ユーザーID

displayName

String

ユーザーの表示名

pictureUrl

String

プロフィール画像のURL。スキームはhttpsです。ユーザーがプロフィール画像を設定していない場合はレスポンスに含まれません。

プロフィール画像のサムネイル:

プロフィール画像のURLに、以下のサフィックスを付加すると、プロフィール画像のサムネイルを取得できます。

サフィックス サムネイルサイズ
/large 200 x 200
/small 51 x 51

例:https://profile.line-scdn.net/abcdefghijklmn/large

statusMessage

String

ユーザーのステータスメッセージ。ユーザーがステータスメッセージを設定していない場合はレスポンスに含まれません。

レスポンスの例

# 友だち関係

# LINE公式アカウントとの友だち関係を取得する

LINEログインのチャネルにリンクされているLINE公式アカウントと、ユーザーの友だち関係を取得します。

友だち追加オプションの使用方法について詳しくは、『LINEログインドキュメント』の「LINEログインしたときにLINE公式アカウントを友だち追加する(友だち追加オプション)」を参照してください。

リクエストの例

# HTTPリクエスト

GET https://api.line.me/friendship/v1/status

# リクエストヘッダー

Authorization

必須

Bearer {access token}

注意

profileのスコープを持つアクセストークンが必要です。詳しくは、『LINEログインドキュメント』の「ユーザーに認証と認可を要求する」と「スコープ」を参照してください。

# レスポンス

friendFlag

Boolean

  • true:ユーザーがLINE公式アカウントを友だち追加済みで、ブロックしていない。
  • false:それ以外の場合。

レスポンスの例