Я пытался создать основу нашего следующего приложения, следуя Обучающему руководству 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">
Надеюсь, это поможет другим.