{"url":"https://nakajmg.hatenablog.com/entry/2020/06/25/230849","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fnakajmg.hatenablog.com%2Fentry%2F2020%2F06%2F25%2F230849\" title=\"LINE Messaging API webhook\u306e\u7f72\u540d\u691c\u8a3c on Lambda - \u3058\u307e\u308d\u3050\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","title":"LINE Messaging API webhook\u306e\u7f72\u540d\u691c\u8a3c on Lambda","height":"190","blog_title":"\u3058\u307e\u308d\u3050","provider_name":"Hatena Blog","provider_url":"https://hatena.blog","blog_url":"https://nakajmg.hatenablog.com/","author_url":"https://blog.hatena.ne.jp/nakajmg/","published":"2020-06-25 23:08:49","image_url":null,"categories":[],"width":"100%","description":"const crypto = require('crypto'); const channelSecret = 'xxxxxxx' // env\u3068\u304b\u304b\u3089\u53d6\u308b exports.handler = async(event) => { const body = Buffer.from(event.body, 'base64').toString() const signature = crypto.createHmac('SHA256', channelSecret).update(body).digest('base64'); const isSignatureMatched = signatur\u2026","type":"rich","author_name":"nakajmg","version":"1.0"}