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アプリ上で、参加者のアカウントと自動連携され応募が可能になります。