gpt4 book ai didi

php - 动态生成 Facebook Open Graph 元标签

转载 作者:IT王子 更新时间:2023-10-28 23:55:47 26 4
gpt4 key购买 nike

正如标题所暗示的,我正在尝试动态生成 Facebook Open Graph 元标记,但我无法使其正常工作。有可能吗?

更新:

最后我在@saccharine 的帮助下成功了。以下代码对我有用:

<?php

$params = array();
if(count($_GET) > 0) {
$params = $_GET;
} else {
$params = $_POST;
}
// defaults
if($params['type'] == "") $params['type'] = "restaurant";
if($params['locale'] == "") $params['locale'] = "en_US";
if($params['title'] == "") $params['title'] = "default title";
if($params['image'] == "") $params['image'] = "thumb";
if($params['description'] == "") $params['description'] = "default description";

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# MY_APP_NAME_SPACE: http://ogp.me/ns/fb/MY_APP_NAME_SPACE#">
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

<!-- Open Graph meta tags -->
<meta property="fb:app_id" content="MY_APP_ID" />
<meta property="og:site_name" content="meta site name"/>
<meta property="og:url" content="http://mysite.com/index.php?type=<?php echo $params['type']; ?>&locale=<?php echo $params['locale']; ?>&title=<?php echo $params['title']; ?>&image=<?php echo $params['image']; ?>&description=<?php echo $params['description']; ?>"/>
<meta property="og:type" content="MY_APP_NAME_SPACE:<?php echo $params['type']; ?>"/>
<meta property="og:locale" content="<?php echo $params['locale']; ?>"/>
<meta property="og:title" content="<?php echo $params['title']; ?>"/>
<meta property="og:image" content="http://mysite.com/img/<?php echo $params['image']; ?>.png"/>
<meta property="og:description" content="<?php echo $params['description']; ?>"/>

</head>
</html>

我现在放入 Facebook 调试器的 url 可以包含任何动态参数,甚至不包含任何动态参数,全部或仅包含一个选择,并且以任何顺序如下:
http://mysite.com/index.php?type=restaurant&title=luigis
或者这个:
http://mysite.com/index.php?locale=de_DE&description=hi&type=bistro

完成后:我现在可以将操作发布到用户的流中:

function postRestaurant() {
FB.api('me/MY_APP_NAMESPACE:have_lunch?\
start_time=2000-12-12T04:00:00&\
expires_in=7200&\
restaurant=' + encodeURIComponent(getRedirectURI() + '?type=restaurant' + '&description=arnold' + '&title=stalone'), 'post', function (response) {
if (!response || response.error) {
console.log('postRestaurant: Error occured => ' + response.error.message);
} else {
console.log('postRestaurant: Post was successful! Action ID: ' + response.id);
}
});
}

像魅力一样工作! : ]

最佳答案

首先,我想重申,我几乎肯定你的问题是由于你传递给调试器的 url 不是动态生成的。 url 标记本质上充当重定向器。除非它与您正在测试的 url 完全相同(意味着 url 元对象上的元标记与您传递的 url 上的元标记相同),否则您将无法获得所需的结果。

元标记

<meta property="og:url"> 

需要动态生成。调试器被重定向到您的默认索引页面,而不是动态生成的页面。

例如,我为我使用的每个对象分配了一个 id,所以我有如下内容

<meta property="og:url" content="http://example.com/index.php?id=<?php echo $_GET['id'] ?>"/> 

我将该确切的 url 传递给调试器,因此调试器登陆的最终页面将是该确切的 url。

另外,在下面

<meta property="og:type" content=""/>

属性是如何动态生成的?您是否记得在您的实际代码中设置如下内容?

<meta property="og:type" content="<?php echo $_GET['type'] ?>"/>

您似乎也将所有内容都塞进了 url,这很危险并且会引起巨大的麻烦,这可能就是这里的问题所在。相反,仅推送一件事,例如 ?type=bistro,然后从数据库传播必要的数据。

我建议基于 object_id 动态生成大多数 OG 标签。为每个 object_id 存储相关的 OG 信息,然后在访问时传播它们。这样,您也可以轻松扩展和编辑您在 OG 更新时使用的标签。

如果您对 OG 有疑问,请毫不犹豫地将它们作为新问题而不是评论发布,因为我保证其他人也有同样的问题。

关于php - 动态生成 Facebook Open Graph 元标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com