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

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

ただいまの
回答率

90.34%

  • AWS(Amazon Web Services)

    2173questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Node.js

    2013questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • nginx

    905questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • Facebook

    416questions

    Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

  • Supervisor

    8questions

    Supervisorは、python製のプロセス管理・デーモン化のツール。ディストリビューションで用意されていないパッケージのデーモン化をプログラム上で簡単に実装することが可能です。さらに、プロセスが終了した際に自動的に起動したり、一定数のプロセスを維持するなどの機能も搭載されています。

FBのwebhookで認証エラーがでて直りません。。よろしくお願いします。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 561

11.18772013

score 2

前提・実現したいこと

AWSのEC2でnodeプログラムのサーバーを立て、Facebookのdevelopperアカウントでチャットボットを作成しようとした時に、そのサーバーのドメインを設定しましたところ、URL認証のエラーがでてきてしまいました。
Facebookのチャットボット開発でwebhookをこのサーバーのドメインで登録した時にこのURL認証エラーを解消したいです。

EC2ではnginxを使っており、supervisorでデーモン化処理を行っております。

またログを見ると200なので成功はしているのですが,URL認証のエラーがでてしまいます。

発生している問題・エラーメッセージ

セキュリティ対策のため、URL/zip/とwebhookで指定しない限り接続できないようにしています。
nodeプログラムの中でURL/zip/と指定すればルート直下のapp.jsが読み出されるはずなのですが、URL/zip/app.jsが読み出されてしまっています。
そのため404のルーティングエラーがでてしまうのですが、
URL/のみでwebhookをverifyすると/zip/以外のルーティングは排除するようにしてあるので、URL認証エラーがでてしまいます。
URL/zip/とするだけでapp.jsが読み出されるようにしてほしいです。
herokuではうまくURL/zip/とすればapp.jsが起動されたのですが、EC2にサーバーを変更したら動かくなくなってしまいました。

ログ

下記が404のエラーログです。(nginx/error.log)
2017/01/31 09:21:29 [error] 32203#0: *2288 "/opt/app/zip/app.js" is not found (2: No such file or directory), client: 172.31.3.41, server: localhost, request: "GET /zip/?hub.mode=subscribe&hub.challenge=1743576600&hub.verify_token=MUBOT HTTP/1.1", host: "fb-apolo.com"
2017/01/31 09:21:29 [error] 32203#0: *2288 open() "/opt/app/404.html" failed (2: No such file or directory), client: 172.31.3.41, server: localhost, request: "GET /zip/?hub.mode=subscribe&hub.challenge=1743576600&hub.verify_token=MUBOT HTTP/1.1", host: "fb-apolo.com"

また以下がURL認証エラーのときです。(nginx/error.log)
=subscribe&hub.challenge=1984872251&hub.verify_token=MUBOT HTTP/1.1", host: "fb-apolo.com"
2017/01/31 09:21:25 [error] 32203#0: *2288 open() "/opt/app/zip" failed (2: No such file or directory), client: 172.31.3.41, server: localhost, request: "GET /zip?hub.mode=subscribe&hub.challenge=1794786228&hub.verify_token=MUBOT HTTP/1.1", host: "fb-apolo.com"

該当のソースコード

nodeプログラムの方で下記のようにzipを排除しています。
if (!req.url.match(/\/zip|\/\?hub\.mode/)){
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('error');
return;
} else if (req.url.match(/\/\?hub\.mode/)){
//FacebookMessengerの認証対応
var param = url.parse(req.url,true);
if (param.query['hub.verify_token'] === 'MUBOT') {
res.end(param.query['hub.challenge']);
} else {
res.end('Error, wrong validation token');
}
return;
}

試したこと

zipの排除のコードをはずして行っても
172.31.16.95 - - [31/Jan/2017:09:15:08 +0900] "GET /?hub.mode=subscribe&hub.challenge=224079945&hub.verify_token=MUBOT HTTP/1.1" 200 72483 "-" "facebookplatform/1.0 (+http://developers.facebook.com)" "66.220.146.23"
のように200がでるのですが、認証エラーでした

よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • 11.18772013

    2017/01/31 21:34

    そうかもしれません!nodeへのパスはどこに記述すればいいでしょうか??

    キャンセル

  • moonphase

    2017/02/01 10:19

    .bash_profile等のPATH環境変数に追記して、SSHログインをやり直せばOKです

    キャンセル

  • 11.18772013

    2017/02/03 15:07

    ありがとうございます!ポートを変えたら動く様になりました!

    キャンセル

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

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

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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

  • AWS(Amazon Web Services)

    2173questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Node.js

    2013questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • nginx

    905questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • Facebook

    416questions

    Facebookは、実名登録制のSNS(ソーシャル・ネットワーキング・サービス)です。開発者用のデベロッパーサイトが存在し、一般ユーザーによるFacebook向けアプリケーション開発が可能です。

  • Supervisor

    8questions

    Supervisorは、python製のプロセス管理・デーモン化のツール。ディストリビューションで用意されていないパッケージのデーモン化をプログラム上で簡単に実装することが可能です。さらに、プロセスが終了した際に自動的に起動したり、一定数のプロセスを維持するなどの機能も搭載されています。