# LIFFアプリおよびサーバーでユーザー情報を使用する

ユーザーが、LIFFブラウザでLIFFアプリを起動したり、外部ブラウザでLIFFアプリを起動してliff.initメソッドでログイン処理を行ったりすると、LIFFアプリはユーザーのプロフィール(ユーザーID、表示名、プロフィール画像、メールアドレス)を取得できます。

LIFFアプリで、これらのユーザー情報を正しく処理しないと、なりすましやその他の種類の攻撃に対して脆弱になります。

このページでは、LIFFアプリを開いたユーザーのユーザー情報を、LIFFアプリおよびサーバーで安全に使用する方法を説明します。

# ユーザー情報をサーバーで使用する

ユーザー情報をサーバーで使用する場合は、IDトークンまたはアクセストークンを、LIFFアプリからサーバーに送信してください。サーバーは、LIFFアプリが送信したトークンを、さらにLINEプラットフォームに送信することで、ユーザーのプロフィールを安全に取得できます。

ユーザー情報をサーバーに送信しないでください

liff.getDecodedIDToken()およびliff.getProfile()で取得したユーザーのプロフィールの詳細を、LIFFアプリからサーバーに送信しないでください。

ヒント

LIFF SDKは、LINEプラットフォームから取得したIDトークンおよびアクセストークンを検証しています。そのため、liff.getIDToken()およびliff.getAccessToken()で取得したトークンは信用できます。

# IDトークンを送信してユーザー情報を取得する

liff.getIDToken()で取得したIDトークンをサーバーに送信した場合は、サーバーでIDトークンを検証する(POST /oauth2/v2.1/verify)ことで、ユーザーのプロフィール情報を安全に取得できます。

# アクセストークンを送信してユーザー情報を取得する

liff.getAccessToken()で取得したアクセストークンをサーバーに送信した場合は、サーバーでアクセストークンの有効性を検証し(GET /oauth2/v2.1/verify)、さらにチャネルIDとアクセストークンの有効期限を検証することで、ユーザーのプロフィール情報を安全に取得できます(GET /v2/profile)。

なお、ユーザーがLIFFアプリを閉じると、有効期限が切れていなくてもアクセストークンは無効化されます。

# ユーザー情報をLIFFアプリで使用する

liff.getDecodedIDToken()またはliff.getProfile()で取得したユーザーのプロフィール情報を使用してください。

ユーザー情報をサーバーに送信しないでください

liff.getDecodedIDToken()およびliff.getProfile()で取得したユーザーのプロフィールの詳細を、LIFFアプリからサーバーに送信しないでください。