Facebook Open Graph API调用问题...需要一个有效的访问令牌吗?

时间:2011-04-22 12:58:39

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我在我的网站上使用Facebook的开放图形api和JavaScript SDK。我的目标是让用户连接到我的网站,然后在我的网站上执行某些操作后,向用户的Facebook流发布消息。我有facebook连接功能正常工作。在连接期间,我请求email,publish_stream,offline_access权限。我认为这些都是我正在努力做的事情。现在,当用户通过Facebook连接连接时,我确实获取并捕获了facebook访问令牌和秘密,虽然我不知道如何处理它们。

根据Facebook关于JavaScript SDK的伪劣文档...要做我想做的事情,它说要使用以下代码:

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);
  }
});

我正在做这个测试,而不是警告响应,我正在对JSON响应进行字符串化并写入控制台。我只想说流发布失败,响应如下:

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

如果用户通过facebook连接“连接”到我的网站并接受了我指定的所有权限,那么我是否拥有有效的访问令牌?访问令牌是否必须传递给api调用的另一个参数?

2 个答案:

答案 0 :(得分:1)

以上代码使用publish_stream权限为我工作。在javascript api收到访问令牌之前,请确保代码未运行。运行:

console.log(FB.getSession()) 

直接在FB.api调用之上,以确保您有access_token。

答案 1 :(得分:1)

确保页面中包含所有这些内容:

<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>