Невозможно опубликовать действие - PullRequest
0 голосов
/ 05 января 2012

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

Я внимательно следил за учебником Open Graph, определяя действие и объект и создавая несколько примеров для проверки агрегации.Я создал кнопку с надписью «Добавить на временную шкалу», но мне не удалось опубликовать действие (в данном случае «прочитать») и получить идентификатор для действия.

Одна проблема, с которой я столкнулся, былаинструмент отладчика, сообщающий мне, что мои метатеги Open Graph лежат вне моих тегов, которые не видны на собственном WordPress сайте.Однако я установил плагин Meta SEO Pack, который позволял мне размещать метатеги Open Graph в мета-описании поста, и инструмент отладчика принимал это.

Это усложняло какую часть полного кода Open Graph(действие и объект) для добавления в мета-описание;Я попытался поместить часть "head" в мета-описании и часть "body" в основной части сообщения, что привело к неработающей кнопке.

Возможно, вы могли бы взглянуть на код, который яИспользовали и посмотрите, есть ли какие-либо проблемы?

Код в мета-описании:

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"
xmlns:fb="https://www.facebook.com/2008/fbml"> 

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# zeitlife: http://ogp.me/ns/fb/zeitlife#">
<meta property="fb:app_id"      content="308222752522151" /> 
<meta property="og:type"        content="zeitlife:article" /> 
<meta property="og:url"         content="http://www.zeitlife.co.uk/cabana-brazilian-food-that-breaks-the-mould" /> 
<meta property="og:title"       content="Cabana: Brazilian that Breaks the Mould" /> 
<meta property="og:description" content="Restaurant Review" /> 
<meta property="og:image"       content="http://www.zeitlife.co.uk/wp-content/uploads/2011/12/IMG_2435.jpg" />

</head> 
</html>

Код в основном тексте сообщения:

    <html>
    <script type="text/javascript"> function read()
{FB.api('/me/zeitlife:article' + '?article=zeitlife.co.uk/cabana-brazilian-food-that-breaks-the-mould &access_token=AAAEYU7OsZC6cBAG0oRKggspR5xjr17Nlpntj2ylxOuN6o3Tztry2EKPWq3JO97yG9De1tlN1SEpqKarovmZAlNKLsEM3BdR4AZAIV6ARDEkQsVSMK3C','post',
function(response) {
var msg = 'Error occured';
if (!response || response.error) {
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);
}
});
}
    </script>

    <body> 
    <div id="fb-root"></div>
    <script src="http://connect.facebook.net/en_US/all.js"></script>
    <script>
FB.init({ 
appId:'308222752522151', cookie:true, 
status:true, xfbml:true, oauth:true
});
    </script>
    <form>
    <input type="button" value="Post To Your Timeline " onclick="read()" />
    </form>
    </body> 
    </html>

Большое спасибо за вашу помощь заранее, это очень ценится!

1 Ответ

0 голосов
/ 22 мая 2012

Во-первых, вы могли бы создать плагин WordPress для изменения HTML-кода заголовка, например, подключиться к функции wp_head с помощью ловушек.

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

Наконец, функция JS для выполнения вызова чтения неверна.Код в порядке, но данные, которые вы передаете в вызов, неверны.Вам не нужно использовать токен доступа в функции, и вы должны использовать полный URL-адрес статьи (например, включить http (s)).

Измените свой код на что-то вроде этого:

setTimeout( function() {
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            //  publish action to facebook
            FB.api( '/me/zeitlife:read', 'post', { article : 'http://zeitlife.co.uk/cabana-brazilian-food-that-breaks-the-mould/' } );
        } else if (response.status === 'not_authorized') {
            // the user is logged in to Facebook, 
            // but has not authenticated your app
        } else {
            // the user isn't logged in to Facebook.
        }
    });
}, 2000 );

Обратите внимание, что действие «zeitlife: read», а не «zeitlife: article», как вы сделали в своем коде.Статья является параметром в вызове.Вы должны проверить свои вызовы API с помощью инструмента API Explorer: https://developers.facebook.com/tools/explorer/

...