2012-01-05 48 views
0

我试图创建一个类似于华盛顿邮报社交阅读器的Facebook Open Graph应用程序,当他们阅读我的网站上的一篇文章时,该应用程序将在个人的新闻提要中宣布www.zeitlife.co。英国。无法发布操作

我紧跟着Open Graph教程,确定了一个动作和一个对象,并创建了几个样本来测试聚合。我创建了一个按钮“添加到时间线”,但我一直无法发布一个动作(在这种情况下是“读取”)并接收动作的ID。

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

这引发了完整的Open Graph代码(动作和对象)放入元描述中的复杂性;我已经尝试将“头部”部分放置在元描述中,并将“主体部分放置在主体后部,这导致了无法使用的按钮。”

也许你可以看看我的代码用过,看看是否有任何问题

代码在网页描述:

<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

首先,您可以创建一个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:读”,而不是“zeitlife:文章”作为您在您的代码来完成。文章是调用中的一个参数。您应该使用API​​ Explorer工具测试您的API调用:https://developers.facebook.com/tools/explorer/