質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

【GAS】401エラーの対処法を知りたい(LINE MessagingAPI)

MimiHurricane
MimiHurricane

総合スコア15

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1回答

0評価

2クリップ

2144閲覧

投稿2019/12/07 08:17

編集2019/12/07 16:29

LINEdevelopersにて、Webhookの検証を実行すると、ボットサーバーから200以外のHTTPステータスコードが返されましたというエラーになる問題で困っています。
原因または解決策をご存知の方はいらっしゃいませんか。

私の行った手順は以下です。

(1)LINEのBot開発 超入門(前編) ゼロから応答ができるまでを参考に、Channelを作成する。
(2)Google Apps ScriptでLINE BOTつくったら30分で動かせた件のコードをコピペ。
(3) (2)と同じ記事の内容にしたがってGASでサービスの公開
(4)LINE developper でWebhookの設定まで行う、検証を実行

すると、以下のような結果になりました。

エラー
ボットサーバーから200以外のHTTPステータスコードが返されました 画像

ちなみに、エラーのステータスコードは401でした。 画像

私は検証が上手くいくと思いました。
なぜなら、Google Apps ScriptでLINE BOTつくったら30分で動かせた件の手順通りに行ったからです。

原因を確かめるため、以下のような手順を行ってみました

(a) Messaging API のドキュメントを確認

 ”有効なチャンネルアクセストークンが指定されていません”

(b) LINE Devaloppers でチャネルアクセストークンを確認

Messaging APIを呼び出すときに使用するチャネルアクセストークンです。このチャネルアクセストークンは期限切れになりません。新しいチャネルアクセストークンを発行したり、既存のチャネルアクセストークンを置き換える場合は、「発行」をクリックします。

上記の表記があるが、再発行をしてもう一度GASでWebhookの設定,
更新→公開URLを LINE Devaloppers に貼り付け
公開

結果に変化はありませんでした。

聞きたいこと

LINE側で他にするべき認証の手続きのようなものがあるのでしょうか?
https://developer.mozilla.org/

また、考えられる原因として

  • LINEdevelopersにおいて、何か設定をしていない
  • GASのコードに問題がある

などあると思いますが、401エラーがどこの部分ででいるのか知りたいです。

GASのコード(Google Apps ScriptでLINE BOTつくったら30分で動かせた件より)

js

// LINE developersのメッセージ送受信設定に記載のアクセストークン var ACCESS_TOKEN = '----------------------------------------------------; function doPost(e) { // WebHookで受信した応答用Token var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; // ユーザーのメッセージを取得 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; // 応答メッセージ用のAPI URL var url = 'https://api.line.me/v2/bot/message/reply'; UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': replyToken, 'messages': [{ 'type': 'text', 'text': userMessage + 'ンゴ', }], }), }); return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); }

なお、私の環境は以下の通りです。
macOS Mojave 10.14.5

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

mistn

2019/12/07 15:13

アクセストークンは他人に見せないようにしてください。 今すぐ再発行したほうがいいです。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。