LINEのMessaging APIを使用して、ユーザー名(DisplayName)を取得する方法
Web上のドキュメントが分かりづらいものが多かったので、私なりのやり方をまとめておきます。
使用パッケージ等について
@line/bot-sdk(v8.4.1) :LINEのサーバーと通信するために使用
dotenv(v16.4.5) :環境変数を取得するために使用
express(v4.18.3) :LINEのサーバーと通信するためにローカルのWEBサーバーを立ち上げるために使用
ngrok(v5.0.0-beta.2) :LINEのサーバーと通信するために使用
node-fetch(v3.3.2) :LINEのサーバーにリクエストを送信するために使用
環境変数の準備
① こちらから、LINEのDeveloper consoleにご自身のLINEアカウントで登録
② 取得用のプロバイダーを作成する
③「Messaging API」を有効にする
↑のボタンを押したあと、いくつか情報を入力する画面になりますので、ご自身の情報を入力してください。また、その画面の最後にLINE公式アカウント利用規約 とLINE公式アカウントAPI利用規約 への同意が求められますので、内容を確認して同意できる場合はチェックを入れて、「作成」ボタンをおしてください。それらに同意できない場合はMessaging APIの利用は出来ません。
※また、作成ボタンを押した後にもいくつか案内がありますので、それをよく読んで画面の指示に従って進めてください。
④「チャンネルシークレット」を取得する
チャンネルの準備ができたら以下の画面になるので、下の方に移動して、「チャネルシークレット」という項目の横にある文字列をメモします。
⑤「チャネルアクセストークン(長期)」を取得する
「Messaging API設定」タブに移動して、一番下までスクロールし、「チャネルアクセストークン(長期)」という項目の横にある「発行」ボタンを押します。
押すと、長い文字列が生成されるので、それをメモします。
【大切な事】ユーザー名等を取得する関数
この関数は、getUserProfile(event)が実行されたときに、ユーザーのプロフィール情報をretrunします。
※この内容は、この記事の核となる部分です。これだけでやり方が分かる場合は、下の有料部分を購入する必要はありません。
async function getUserProfile(event) {
let request_url = `https://api.line.me/v2/bot/profile/${event.source.userId}`;
let returnData = await fetch(request_url, {
method: "GET",
headers: {
"Content-Type": "application/json; charset=UTF-8",
Authorization: `Bearer ${process.env.CHANNEL_ACCESS_TOKEN}`,
},
})
.then((response) => response.json())
.then((data) => {
return data;
});
return returnData;
}
ここから先は
¥ 500
Amazonギフトカード5,000円分が当たる
サポート頂けますと、今後の様々な活動の原動力となりますので、よろしければ、よろしくお願いします!