开发者

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

开发者 https://www.devze.com 2023-02-28 06:31 出处:网络
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 th

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

精彩评论

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