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;
}



ここから先は

3,302字 / 2画像

¥ 500

サポート頂けますと、今後の様々な活動の原動力となりますので、よろしければ、よろしくお願いします!