0

node.js でリアルタイム更新を行っていますが、'/facebookRealtime/callback' と domain+port+'/facebookRealtime/callback' である正しい endpointurl とコールバック URL を設定したかどうかわかりません。私が得ているエラーは "{"error":{"message":"(#2200) callback validation failed: Operation timed out after 6000 milliseconds with 0 bytes received","type":"OAuthException","code": 2200}}"、何が起こったのか、どのように修正するのか教えてください.

exports.postSubscription=function (endpointUrl, appId, accessToken, object, fields,callback){

var options = {
        host:'graph.facebook.com',
        port:443,
        path:'/'+appId+'/subscriptions?access_token='+accessToken,
        method:'POST'
};
var postData = querystring.stringify({
    "object":object,
    "fields":fields,
    "callback_url": endpointUrl,
    "verify_token": "abc123"
});

var req = https.request(options, function(res){
    var data = "";
    res.on('data', function(chunk){
        data += chunk;
    });

    res.on('end', function(){
        callback(data);
        console.log(data);
    });

    res.on('error', function(e){
        callback(e.message, null);
    });
});
req.write(postData);
req.end();
   };
4

1 に答える 1

0

Content-Lengthとを使用したリクエストでヘッダーが欠落しているようですContent-Type:

exports.postSubscription = function(endpointUrl, appId, accessToken, object, fields, callback) {
    var postData = querystring.stringify({
        "object": object,
        "fields": fields,
        "callback_url": endpointUrl,
        "verify_token": "abc123"
    });

    var options = {
        host:'graph.facebook.com',
        port:443,
        path:'/'+appId+'/subscriptions?access_token='+accessToken,
        method:'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': postData.length;
        }
    };

    var req = https.request(options, function(res) {
        var data = "";
        res.on('data', function(chunk) {
            data += chunk;
        });

        res.on('end', function() {
            callback(data);
            console.log(data);
        });

        res.on('error', function(e) {
            callback(e.message, null);
        });
    });
    req.write(postData);
    req.end();
};

これに加えて、Facebook からの更新要求を処理する必要があります。それらを処理しないと、エラーが発生します。

于 2013-07-16T10:54:47.280 に答える