Сложность публикации действий на временной шкале - PullRequest
3 голосов
/ 27 сентября 2011

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

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

Я определил битву действие и герой объект, используя настройки по умолчанию при настройке каждого. 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 ]

2 голосов
/ 27 сентября 2011

У меня та же проблема, и я изменил функцию обратного вызова, чтобы сделать ее более полезной:

  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>
1 голос
/ 28 сентября 2011

Относительно финальной точки на og: url - это правильно.Обычно вы можете рассматривать URL OG как «первичный ключ» объекта в графике.

1 голос
/ 27 сентября 2011

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

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

0 голосов
/ 01 июня 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...