难以发布行动到时间表

我试图在Facebook的开放图形教程之后构建我们的下一个应用程序的基础,但由于某些原因,我收到了错误,无论我如何尝试发布操作。

我会尽可能地深入,因为我希望这对于所有开发人员掌握新时间表非常有用。

我在设置每个对象时使用默认设置定义了一个战斗行动和一个英雄对象。 超越游戏是我的名字空间。

$id是Facebook用户的用户名(我尝试过使用/ me /,直接id在过去对我来说一直不太成问题)。

$herourl是一个urlencoded字符串,指向具有以下内容的单独网页:

 <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# transcendgame: http://ogp.me/ns/fb/transcendgame#">
  <meta property="fb:app_id"      content="[my id]"> 
  <meta property="og:type"        content="transcendgame:hero"> 
  <meta property="og:url"         content="http://apps.facebook.com/transcendgame/"> 
  <meta property="og:title"       content="Hercules"> 
  <meta property="og:description" content="As this game is still in development, you can ignore this feed post!"> 
  <meta property="og:image"       content="[an image url]">

应用程序画布页面包含以下代码。 它应该向用户的时间表发布新的操作事件,但一直给我“发生错误”。 我也尝试过与示例英雄对象(samples.ogp.me ...)一样的问题。

<script>
    function doTest()
        {
            FB.api('/<?=$id?>/transcendgame:battle' + 
                        '?hero=<?=$herourl?>','post',
                        function(response) {
                if (!response || response.error) {
                        alert('Error occured');
                } else {
                    alert('Post was successful! Action ID: ' + response.id);
                    }
            });
        }
    </script>

    <a href="#" onclick="doTest(); return false">Test fb post</a>

我正在调用JS SDK并正确运行fb.init。 我真的不知道问题出在哪里,更不用说如何解决问题了。

编辑:我已经正确地将用户的访问令牌添加到API调用:

FB.api('/me/transcendgame:battle' + 
                    '?hero=<?=$herourl?>&access=<?=$token?>','post',

但是,我收到以下错误:

Type: OAuthException

Message: (#3502) Object at URL [url] has og:type of 'game'. The property 'hero' requires an object of og:type 'transcendgame:hero'.

这很奇怪,因为该网页肯定有og:type设置正确,正如本问题前面所列。 这是我需要解决的一些Facebook呃逆?

第二次编辑 :修正了最后的问题。

og:url我曾经假设它指向应用程序画布的URL,但它需要引用它自己。 例如,如果你的对象在mydomain.com/object1.php上,那么代码必须是:

<meta property="og:url"         content="http://www.mydomain.com/object1.php">

希望这有助于他人。


我遇到了同样的问题,并将回调更改为更有帮助:

  var fb_url = '/me/YOUR_NAMESPACE?key=value';
  FB.api(fb_url,'post',
    function(response) {
      console.log(response);
      if (!response || response.error) {
        var msg = 'Error occured';
        if (response.error) {
          msg += "nnType: "+response.error.type+"nnMessage: "+response.error.message;
        }
        alert(msg);
      } else {
        alert('Post was successful! Action ID: ' + response.id);
      }
    }
  );

UPDATE

我终于在时间轴上发布了一篇文章,我必须做的改变是使用BETA版的JavaScript SDK。 (https://developers.facebook.com/support/beta-tier/)

用这个:

<script src="//connect.beta.facebook.net/en_US/all.js#appId=xxx&amp;xfbml=1"></script>

取而代之的是:

<script src="//connect.facebook.net/en_US/all.js#appId=xxx&amp;xfbml=1"></script>

我最初也有一些很难发布。 我的问题隐藏了操作的配置设置。 确保您的操作设置为针对确切的对象。 以下是我设置和工作的一些屏幕:

如果这些设置是正确的,请检查从Facebook返回的错误代码,将其发布到此处,我可以进一步帮助您。


关于og:url的最后一点 - 这是正确的。 通常可以将OG URL视为图中对象的“主键”。

链接地址: http://www.djcxy.com/p/60021.html

上一篇: Difficulty posting Actions to Timeline

下一篇: Deselect cell while single selection in iOS5?