Сложность публикации действий на временной шкале
Я попытался создать основу нашего следующего приложения, следуя учебному пособию по 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&xfbml=1"></script>
Вместо этого:
<script src="//connect.facebook.net/en_US/all.js#appId=xxx&xfbml=1"></script>
Что касается конечной точки на og:url - это правильно. Как правило, URL OG можно считать "первичным ключом" объекта в графике.
У меня были некоторые трудные посты изначально. Моя проблема заключается в настройках конфигурации действия. Убедитесь, что ваши действия настроены на конкретный объект. Вот несколько экранов того, что я настроил и работал:
Если эти настройки верны, проверьте код ошибки, который возвращается с Facebook, опубликуйте его здесь, и я могу помочь вам в дальнейшем.
Чтобы прояснить возможную путаницу, og:url
не "HAVE
"быть таким же URL
как url
вашей object1.php
стр. Важно отметить, что независимо от URL
что вы ссылаетесь там, он должен иметь META
теги в html <head>
страницы.
Я, например, поставил URL
страницы холста, так что, когда кто-то нажимает гиперссылку в действии на временной шкале, он открывает эту страницу. Пока META
информация от 'Get Code'
ссылка на объект находится в голове, вы не получите ошибку.