◆当ページにはプロモーションが含まれています

JavaScript

LINE Messaging API & LINE ログイン の使い方を学ぶ!

みなさん、こんにちは。どんぶラッコです。

前回、Developerアカウントの作成方法をお伝えしました。

https://proglearn.com/2021/01/15/line-api-%e3%82%92%e4%bd%bf%e3%81%84%e3%81%93%e3%81%aa%e3%81%9d%e3%81%86%ef%bc%81-%e2%91%a0%e3%82%a2%e3%82%ab%e3%82%a6%e3%83%b3%e3%83%88%e4%bd%9c%e6%88%90%e7%b7%a8/

次は、LINE APIを使ったMessaging API と LINE ログインの使い方をハンズオン形式で学んでいきましょう!

今回は、Zennに本の形式で掲載してみました。

ハンズオン資料

こちらの記事では、最終的に完成するコードを掲載しておきたいと思います♪

app.js

const express = require("express")
const app = express()
const port = 8888
const line = require('@line/bot-sdk')

const config = {
  channelAccessToken: 'CHANNEL_ACCESS_TOKEN',
  channelSecret: 'CHANNEL_SECRET',
}
const client = new line.Client(config)

const handleEvent = async (event) => {
  // メッセージじゃなかったら返信しない
  if (event.type !== 'message' || event.message.type !== 'text') {
    return null;
  }

  // ここで返信用メッセージを作成
  await client.replyMessage(event.replyToken, {
    type: 'text',
    text: event.message.text
  })
}

// 8888番ポートでlisten
app.listen(port, () => {
  console.log("Node.js app listening at http://localhost:" + port)
})

// webhook設定
app.post('/webhook', line.middleware(config), (req, res) => {
  const events = req.body.events
  console.log(events)
  events.map(handleEvent)
})

// /liff の飛び先を publicフォルダに指定
app.use('/liff', express.static(__dirname + '/public'))

/public/index.html

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>LIFF Handson</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  <script src="./js/jquery-3.5.1.min.js" defer></script>
  <script src="./js/bootstrap.min.js" defer></script>

</head>
<body>
  <div class="container">
    <h1>LIFF EXAMPLE</h1>

    <p>
      <span id="line-name"></span> さんのTODO
    </p>
  </div>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
  <!-- LIFF SDK の読み込み -->
  <script charset="utf-8" src="https://static.line-scdn.net/liff/edge/2/sdk.js"></script>
  <script>
    (async function () {
      await liff.init({liffId: 'LIFF_ID'})
      if (!liff.isLoggedIn()) {
        liff.login();
      }

      // LINE ID情報の取得
      const profile = await liff.getProfile();
      $('#line-name').text(profile.displayName)
      console.log(profile)
    }())
  </script>
</body>
</html>

また、今回のハンズオンではNode.jsを構築するので、その勉強にも最適だと思います。

Node.jsについてはこんな記事も書いているので参考にしてみてください♪


みなさんも是非チャレンジしてみてください!

エンジニアにおすすめ転職サイト

マイナビIT AGENT
迷ったらまずはココ。求人数が多いため希望や条件にマッチする求人が見つかる!

レバテックキャリア
担当者のレベルが高い。エンジニア特化で15年の実績がある実績で初回提案での内定率驚異の90%!

JOIN
副業やフリーランスとして高額報酬案件を見つけるならJOIN。未経験者でも案件獲得実績豊富が強み!

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
一緒によく読まれている記事

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です