无法发布操作

时间:2012-01-05 14:02:28

标签: facebook object action publish

我正在尝试创建一个类似华盛顿邮报社交阅读器的Facebook开放图形应用程序,当他们在我的网站www.zeitlife.co.uk上阅读文章时,会在一个人的新闻中宣布。

我密切关注了Open Graph教程,确定了一个动作和一个对象,并创建了几个样本来测试聚合。我创建了一个按钮,说“添加到时间轴”,但我无法发布操作(在本例中为“读取”)并收到操作的ID。

我遇到的一个问题是调试工具告诉我我的Open Graph元标记位于我的标记之外,这在自托管的wordpress网站中是不可见的。但是,我安装了Meta SEO Pack插件,它允许我将Open Graph元标记放在帖子的元描述中,调试工具接受了这个。

这引起了完整的Open Graph代码(动作和对象)的哪一部分放入元描述中的复杂性;我已经尝试将“head”部分放在Meta描述中,并将“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 :(得分:0)

首先,您可以创建一个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​​ Explorer工具测试API调用:https://developers.facebook.com/tools/explorer/