Facebook access token not accepted to Open Graph using Node.js facebook-node-sdk

1.4k Views Asked by At

Posting an Open Graph action using the Node.js facebook-node-sdk module gives me {"error": "An active access token must be used to query information about the current user."}.

var FB = require( 'fb' )
var path = '/me?' + namespace + ':' + action_type_name
var body = {
     access_token: myAccessToken,
     myAction : myCustomObjectURL
}
FB.api( path, 'post', body, function( res )
{
    if( res.error ) {
        console.log( 'the call to open graph failed: ' + res.error.message );
    }
    else {
        console.log( 'success' )
    }
})

If I print this access token and use it with cURL (curl https://graph.facebook.com/me?access_token=myAccessToken), it returns correctly, no error. Facebook also shows that the app has permission to post as this user. So what am I doing wrong here?

2

There are 2 best solutions below

0
On BEST ANSWER

D'oh, stupid question. It turns out I needed a slash instead of a question mark in the URL path: path = '/me/' + ...

0
On

Actually this is a bug of the node facebook api. When you use a '?' in your api-calls the accesstoken gets appended with another '?' https://github.com/Thuzi/facebook-node-sdk/blob/master/fb.js#L268

This leads to a api-call like this one: https://graph.facebook.com/me/friends?limit=10?access_token=vSAEFfionhaWFwai...

You see multible '?' in the request and Facebook can not find the accesstoken anymore because of this.