# 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アプリからサーバーに送信しないでください。