请参阅以下代码,我将其用于Facebook Open Graph:
<meta property="fb:app_id" content="XXXXX" />
<meta property="og:type" content="collection" />
<meta property="og:url" content="http://XXXXXXXXXXXXX/" />
<meta property="og:title" content="" />
<meta property="og:image" content="http://XXXXXXXXXXXXXXXXXXXXXXXXXX.jpeg"/>
<script type="text/javascript">
function postCook() {
var parameters = new Array();
parameters["og:title"] = "some_text";
FB.api(
'me/<namespace>:<wwwww>',
'post', {
collection: 'http://XXXXXXXXXXXXXXXXX/'
},
function(response) {
//alert(response.responseText);
console.log(response);
if (!response || response.error) {
alert('Error occured');
} else {
alert('Other22 was successful! Action ID: ' + response.id);
}
});
}
</script>
在这里,我想传递og:title
和其他一些参数,而不是在元标记中使用。有没有办法在FB.api中传递更多参数?
感谢。
答案 0 :(得分:2)
虽然我可能错了(因为Facebook无情地转移他们的API),但他们不允许你传递任何自定义标签信息,可能因为它可能被用来歪曲信息。
相反,一旦发布动作击中Facebook,Facebook将立即抓取传入的网址,并获取它可以找到的所有元数据,优先处理任何打开的图形标记,然后再回到其他传统的元信息检索方法(标题)标签,抓取正文等。)一种可能的“解决方法”是将“echo”网址传递给Facebook而不是目标网址本身。但是,这依赖于您使用服务器端解决方案,因为我不相信您可以使用JS SDK执行此操作。
即。不是将http://www.foobar.com传递给Facebook,而是传递http://www.barbaz.com/echo.php?title=your%20custom%2otitle&description=etcetc&url=myurl
根据需要定制网址参数,并且echo.php
到$_GET
可以读取这些参数。然后echo.php将包含要由Facebook读取的开放图形标签,然后通过javascript将用户重定向到正确的URL。 Facebook的刮刀不会遵循javascript重定向。
echo.php:
<html>
<head>
<meta property="og:title" value="<?=$_GET['title']?>">
</head>
<body>
<script>
window.location.href = '<?=$_GET['url']?>';
</script>
</body>
</html>
或者,你可以在echo.php的顶部检查facebook的用户代理字符串,并使用header();
将任何非命中链接重定向到正确的URL,并仅渲染facebook bot的退回页面。 / p>
答案 1 :(得分:0)
这里我想传递og:title和其他一些参数,而不是在元标记中使用。
这不是Open Graph对象的工作方式。
URL标识对象,任何数据都必须包含在此URL提供的HTML代码中。