2016-07-07 18 views
0

私はMeteorでFacebook Messengerボットを作ろうとしています。セットアップには、検証トークンを検索し、検証GET要求で送信されたチャレンジに応答することが含まれます。 Facebookの(非流星)サンプルアプリケーションでは、次のコードが使用されます。Meteor Facebook Messenger Bot webhook

app.get('/webhook', function(req, res) { 
    if (req.query['hub.mode'] === 'subscribe' && 
     req.query['hub.verify_token'] === VALIDATION_TOKEN) { 
    console.log("Validating webhook"); 
    res.status(200).send(req.query['hub.challenge']); 
    } else { 
    console.error("Failed validation. Make sure the validation tokens match."); 
    res.sendStatus(403);   
    } 
}); 

私は、次の(流星)コードを使用して同じ機能を実現しようと、私は以下のエラーが表示されます。

var bodyParser = Meteor.npmRequire('body-parser'); 

// Add two middleware calls. The first attempting to parse the request body as 
// JSON data and the second as URL encoded data. 
Picker.middleware(bodyParser.json()); 
Picker.middleware(bodyParser.urlencoded({ extended: false })); 

// ------------------------------------------------------------ 
// HANDLE THE INITIAL HANDSHAKE WITH FACEBOOK VIA A GET REQUEST 
// ------------------------------------------------------------ 
var getRoutes = Picker.filter(function(req, res) { 
    // you can write any logic you want. 
    // but this callback does not run inside a fiber 
    // at the end, you must return either true or false 
    return req.method == "GET"; 
}); 

getRoutes.route('/webhook', function(params, req, res, next) { 
    if (params.query['hub.verify_token'] === '78750') { 
     console.log(params.query['hub.verify_token']); 
     // res.end(); 
     res.end(params.query['hub.challenge']); 
    } 
}); // end getRoutes 

エラー:

The URL couldn't be validated. Response does not match challenge, expected value = '1127215706', received='<!DOCTYPE html> <htm... 

おそらく、この問題は、それがクライアントではなくサーバー上で実行されることに起因するのですか?もしそうなら、私はこのコードをサーバ上で実行するためにどこに置くべきですか?また

、私のブラウザコンソールは12回以下のエラーがあります。

Mixed Content: The page at 'https://pfbe.meteorapp.com/' was loaded over HTTPS, but requested an insecure font 'http://themes.googleusercontent.com/static/fonts/inconsolata/v5/BjAYBlHtW3CJxDcjzrnZCIbN6UDyHWBl620a-IRfuBk.woff'. This request has been blocked; the content must be served over HTTPS. 

私はこの問題を解決するために何ができますか?

+0

はあなたが_とはどういう意味ですかparsedIntとしてそれを返す必要がありますか? Facebookは要求を送信します。したがって、ここではクライアント、_server_は送信先です。 // 'received = '<!DOCTYPE html> ...'は非常に明白です。エンドポイントは完全なHTML文書を返します(デフォルトのテンプレートかエラー文書かどうかはそのスニペットからは伝えられません)。それが想定されているようにチャレンジする価値がある。 – CBroe

答えて

0

使用Restivus - あなたは、チャレンジと一体的に対応し、_「それは、クライアントではなくサーバー上で実行されている」

関連する問題