开发者

Problem with Facebook Open Graph API call... need an active access token?

I'm using Facebook's open graph api along with the JavaScript SDK on my site. My goal is for a user to connect to my site and then after performing certain actions on my site publish a message to the users facebook stream. I have the facebook connect function working just fine. During the connect I request email, publish_stream, offline_access permissions. I think those are all I need for what I'm trying to do. Now when the user connects via facebook connect I do get and capture the facebook access token and secret though I don't know what to do with them.

According to Facebook's shoddy documentation for the JavaScript SDK... to do what I'm trying to do it says to use the following code:

var body = 'Reading Connect JS documentation';
FB.api('/me/feed', 'post', { message: body }, function(response) {
  if (!response || response.error) {
    alert('Error occured');
  } else {
    alert('Post ID: ' + response.id);
  }
});

I'm doing just that as a test and instead of alerting the response I'm stringifying the JSON response and writing to the console. Suffice it to say the stream publish fails and the response is this:

{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}}

If the user is 'connected' to my site via facebook connect and accepted all the permi开发者_开发问答ssions I specified, don't I have a valid access token? Is the access token another parameter I have to pass to the api call?


Make sure you have all this in the page:

<BODY>
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script type="text/javascript">
    FB.init({
      appId  : APP_ID, // the app ID you get when you register your app in http://www.facebook.com/developers/
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true  // parse XFBML
    });

    if (FB.getSession() != null) {
      var body = 'Reading Connect JS documentation';
      FB.api('/me/feed', 'post', { message: body }, function(response) {
        if (!response || response.error) {
          alert('Error occured');
        } else {
          alert('Post ID: ' + response.id);
        }
      });
    }
    </script>


The above code worked for me with the publish_stream permission. Make sure that the code is not running before the javascript api has received the access token. Run:

console.log(FB.getSession()) 

directly above the FB.api call to make sure you have an access_token.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜