【flask】liffでユーザーのline idやユーザー名を取得する方法

lineのliffでユーザーのline idやユーザー名を取得する方法

方法1

liff.getProfile()を利用

jsファイル

$(function () {
    //LIFFアプリの初期化。このメソッドのあとLIFF SDKの他のメソッドを実行できるようになる
    liff.init({
        liffId: 'xxxxxxxxxxxxxxxxx',
        //初期化が終わったら
    }).then(() => {
        liff.getProfile().then(function (profile) {
            // 非同期処理が成功した場合
            const line_userid = profile.userId;
            const line_displayname = profile.displayName;
            //alert("line_userid: " + line_userid + "\nline_displayname: " + line_displayname);
        }).catch(function (error) {
            // 非同期処理が失敗した場合
            // handle error
        });

ただしこの方法で取得したユーザーidやユーザー名を自前サーバーに送ることはセキュリティ上推奨されていない。そこで以下の方法で取得する必要がある。

方法2

IDトークンを利用

LIFFアプリおよびサーバーでユーザー情報を使用する
LINE Developersサイトは開発者向けのポータルサイトです。LINEのさまざまな開発者向けプロダクトを利用するための、管理ツールやドキュメントを利用できます。LINEログインやMessaging APIを活用して、アプリやサービスをもっと便利に。

jsファイル

    liff.init({
        liffId: '/ajax',
        //初期化が終わったら
    }).then(() => {
        const accessToken = liff.getAccessToken();
        const idToken = liff.getIDToken();

        // ajax通信
        $.ajax({
            url: 'xxxxxxxxxxx', //アクセスするURL
            type: 'POST',   //デフォルトはGET
            cache: false,   //cacheを使うか使わないかを設定
            data: {
                "accessToken": accessToken,
                "idToken": idToken
            }          //アクセスするときに必要なデータを記載      
        })

views.py

@liff.route("/ajax", methods=["POST"])
def ajax():
if request.method == "POST":
accessToken = request.form["accessToken"]
idToken = request.form["idToken"]
data = {"id_token": idToken, "client_id": "1661541967"}
# LINE APIにリクエストを送信する
response = requests.post(
"https://api.line.me/oauth2/v2.1/verify",
data=data,
)

if response.status_code == 200:
  print("投稿成功")
  # LINE APIから、ユーザーのプロフィール情報を取得する
  user_profile = response.json()
else:
  print("投稿失敗")

詳細

LINEログイン v2.1 APIリファレンス
LINE Developersサイトは開発者向けのポータルサイトです。LINEのさまざまな開発者向けプロダクトを利用するための、管理ツールやドキュメントを利用できます。LINEログインやMessaging APIを活用して、アプリやサービスをもっと便利に。

また、この方法でユーザーのメールアドレスを取得したい場合は、OpenID Connectの申請が必要になる。

OpenID Connectの申請方法 | リタッチ
お客様の公式LINEアカウントでキャンペーンを開催する方法です。LINEアプリ上で、参加者のアカウントと自動連携され応募が可能になります。
タイトルとURLをコピーしました