gpt4 book ai didi

javascript - 为什么 Facebook 共享按钮从元标记而不是我指定的参数中提取参数?

转载 作者:行者123 更新时间:2023-12-02 17:59:20 24 4
gpt4 key购买 nike

我曾经在动态创建的页面中有共享按钮,用于共享页面中的特定内容:

<a class="share" onclick="window.open('http://www.facebook.com/sharer.php?s=100&amp;p[title]=TITLE&amp;p[summary]=SUMMARY&amp;p[url]=http://www.facebook.com&amp;&amp;p[images][0]=imageurl', 'newwindow', 'width=555, height=315'); return false;"></a>

这会导致一个共享窗口,其中包含上述代码内的参数(TITLE、SUMMARY、IMAGEURL、URL 等)中指定的内容。然而,最近 Facebook 似乎已弃用此代码,现在发生的情况是,当您尝试共享时,您会看到我指定的参数,但一旦您将它们发布到 Facebook 上,就会显示不同的内容!

Facebook 似乎没有看到我指定的参数,而是抓取了 URL 中指定的页面,并在该页面的元标记内查找信息。这意味着页面上的所有共享按钮现在都发布相同的元标记。

有人知道我如何解决这个问题或基本上共享自定义内容吗?

最佳答案

您可以在服务器上创建一个文件,该文件提供具有正确元标记的有效 HTML 文件。

shared.php?title=Hello&description=FooBar&image=URL&link=LINKURL

<html><head>
<meta property="og:title" value="<?php echo $_GET['title'] ?>" />
<meta property="og:description" value="<?php echo $_GET['description'] ?>" />
<meta property="og:image" value="<?php echo $_GET['image'] ?>" ?>
<script type='text/javascript'>
setTimeout(function() {
document.location = "<?php echo $_GET['link'] ?>"; }, 500
);
</script>
</head></html>

现在只需将此文件与 sharer.php 一起传递,将所有参数传递到此文件中,如下所示:

<div 
class="fb-share-button"
data-href="http://YOURSERVER.com/shared.php?title=Hello&amp;description=FooBar&amp;image=URL&amp;link=LINKURL"
data-type="button_count">
</div>

或者使用你原来的JS代码:

<a class='share' onclick="window.open('https://www.facebook.com/sharer/sharer.php?app_id=YOURAPPID&sdk=joey&u=http%3A%2F%2Fyourserver.com%2Fshared.php%3Ftitle%3DHello%26description%3DFooBar%26image%3DURL%26link%3DLINKURL&display=popup', 'newwindow', 'width=555, height=315'); return false;"></a>

当 facebook 抓取您的 URL 时,由于它传递相同的 URL 参数,因此每次都会创建相同的元标记。

Javascript URL 重定向需要稍微延迟,以避免 Facebook 爬虫跟踪重定向到最终目的地;用户点击 Facebook feed 中的链接仍会被重定向到最终位置。

关于javascript - 为什么 Facebook 共享按钮从元标记而不是我指定的参数中提取参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20694384/

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