我正在尝试创建一个类似华盛顿邮报社交阅读器的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>
非常感谢你提前帮助,非常感谢!
答案 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/