我正在构建一个使用Facebook评论的facebook iFrame应用程序。当用户发表评论时,默认操作是此评论将发布到他们的墙上。墙柱是
的路线UserX commented on example.com
# the comment text goes here
http://example.com
apps.facebook.com
您应该能够包含图片,说明,并将链接设置为页面标题(在apps.facebook.com上方显示http://example.com),但我没有幸运得到这个工作。
我认为它会从我的元标记中获取信息(只要它们包含适当的'og'标记),但这不起作用。我也无法像普通墙贴一样定义标题,网址,图片等的值。
任何人都知道如何让这个工作?
编辑:
以下是我目前使用的元标记。
<meta property="og:title" content="USERNAME'S PAGE" />
<meta property="og:type" content="website" />
<meta property="og:url" content="http://example.com"/>
<meta property="og:image" content="http://example.com/images/wall-post.png" />
<meta property="og:description" content="Some description goes here." />
答案 0 :(得分:2)
使用URL Linter进行调试 http://developers.facebook.com/tools/lint/
确保所有元标记都是正确的,如果您进行了一些更改,则需要一些时间来更新Facebook,这是一个示例,这是一个可用的版本:
<!doctype html>
<html xmlns:og="http://ogp.me/ns#"
xmlns:fb="https://www.facebook.com/2008/fbml" lang="en">
<head>
<meta charset="utf-8">
<title>Facebook Comment Box Sample</title>
<meta property="og:title" content="YOUR-POST-TITLE"/>
<meta property="og:type" content="website"/>
<meta property="og:url" content="http://YOUR-SITE-URL"/>
<meta property="og:image" content="http://YOUR-IMAGE-URL"/>
<meta property="og:site_name" content="YOUR-SITE-TITLE"/>
<meta property="og:description" content="YOUR-DESCRIPTION"/>
<meta property="fb:admins" content="YOUR-USER-ID"/>
</head>
<body>
<h1>Facebook Comment Box:</h1>
<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<fb:comments href="http://YOUR-SITE-URL" num_posts="10" width="500"></fb:comments>
</body>
</html>
答案 1 :(得分:1)
好吧,经过很多磕磕绊绊之后,我发现了这一点。
我的iFrame应用程序在访问应用程序之前需要进行facebook身份验证(因为我相信所有的facebook应用都会这样做)。这意味着Facebook抓取工具无法抓取我的主页并选择og:meta标记。
要解决这个问题,我首先要弄清楚facebook抓取器的样子。我为所有请求记录了HTTP_USER_AGENT,然后使用facebook URL Linter(http://developers.facebook.com/tools/lint/)来ping我的网站。
facebook抓取工具将自己标识为“facebookexternalhit / 1.1(+ http://www.facebook.com/externalhit_uatext.php)”
一旦我有了这个,我就可以添加一些条件逻辑让爬虫绕过身份验证并访问我的网站。我希望这有助于其他人。
答案 2 :(得分:-1)
首先,我确保设置了所有元属性,然后我将代码放入其中:
if (strpos($_SERVER['HTTP_USER_AGENT'],"externalhit_uatext")<5)
{
}