Сложность публикации действий на временной шкале

Я попытался создать основу нашего следующего приложения, следуя учебному пособию по Open Graph в Facebook, но по какой-то причине я получаю сообщения об ошибках, независимо от того, как я пытаюсь разместить действие.

Здесь я расскажу как можно глубже, и надеюсь, что это будет очень полезно для всех разработчиков, знакомых с новой временной шкалой.

Я определил боевое действие и объект героя, используя настройки по умолчанию при настройке каждого. transcendgame - это мое пространство имен.

$id это идентификатор пользователя Facebook (я пробовал использовать / me /, прямой идентификатор всегда был менее проблематичным для меня в прошлом).

$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]">

Страница холста приложения содержит следующий код. Это должно POST новое событие действия на временной шкале пользователя, но постоянно дает мне "Произошла ошибка". Я также попробовал это с примером объекта героя (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">

Надеюсь, что это помогает другим.

4 ответа

Решение

У меня та же проблема, и я изменил обратный вызов, чтобы быть более полезным:

  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 += "\n\nType: "+response.error.type+"\n\nMessage: "+response.error.message;
        }
        alert(msg);
      } else {
        alert('Post was successful! Action ID: ' + response.id);
      }
    }
  );

ОБНОВИТЬ

Я наконец-то получил сообщение на временной шкале, и мне пришлось внести изменения в использование бета-версии 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>

Что касается конечной точки на og:url - это правильно. Как правило, URL OG можно считать "первичным ключом" объекта в графике.

У меня были некоторые трудные посты изначально. Моя проблема заключается в настройках конфигурации действия. Убедитесь, что ваши действия настроены на конкретный объект. Вот несколько экранов того, что я настроил и работал:

Если эти настройки верны, проверьте код ошибки, который возвращается с Facebook, опубликуйте его здесь, и я могу помочь вам в дальнейшем.

Чтобы прояснить возможную путаницу, og:url не "HAVE"быть таким же URL как url вашей object1.php стр. Важно отметить, что независимо от URL что вы ссылаетесь там, он должен иметь META теги в html &lt;head&gt; страницы.

Я, например, поставил URL страницы холста, так что, когда кто-то нажимает гиперссылку в действии на временной шкале, он открывает эту страницу. Пока META информация от 'Get Code' ссылка на объект находится в голове, вы не получите ошибку.