# 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
アクセストークンの有効期限が切れるまでの秒数
# エラーレスポンス
# アクセストークンを更新する
リフレッシュトークンを使って新しいアクセストークンを取得できます。ユーザーの認証が終わったときに、アクセストークンと共にリフレッシュトークンが返されます。
- ここでは、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
アクセストークンに付与されている権限。スコープについて詳しくは、「スコープ」を参照してください。
# エラーレスポンス
# アクセストークンを取り消す
ユーザーのアクセストークンを無効にします。
- ここでは、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
:シングルサインオンによるログイン
name
String
ユーザーの表示名。認可リクエストにprofile
スコープを指定しなかった場合は含まれません。
picture
String
ユーザープロフィールの画像URL。認可リクエストにprofile
スコープを指定しなかった場合は含まれません。
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ログインドキュメント』の「ユーザーに認証と認可を要求する」と「スコープ」を参照してください。