【问题标题】:Want custom title / image / description in facebook share link from a flash app [duplicate]想要来自 Flash 应用程序的 Facebook 共享链接中的自定义标题/图像/描述 [重复]
【发布时间】:2023-03-08 10:14:02
【问题描述】:

可能重复:
How does Facebook Sharer select Images?

我正在制作一个 Flash 应用程序,用于演示以不同速度行驶时可能造成的交通伤害。我希望用户能够在 facebook 上分享这些信息。然而,这要求我可以以某种方式自定义将出现在 facebook 上的文本。

我正在制作一个在空白窗口中打开的网址(来自 Flash 应用程序本身)。我指定了 u 和 t 参数,将生成的消息作为 t 参数。但这似乎总是被页面标题覆盖。如果我在 html 代码中省略了标题标签,则使用文件名(也覆盖指定的标题)。

http://www.facebook.com/sharer.php?u=http://espentokerud.com/face/addiste.html&t=test;

我也尝试过对 url 进行 url 编码,但无济于事。

http://www.facebook.com/sharer.php?u=http%3a%2f%2fespentokerud.com%2fface%2faddiste.html&t=test;

我也尝试过使用 addthis API,但也遇到了同样的缺点。有趣的是,如果我发布一个swf,可以自定义标题和描述,还可以指定截图。但如果我不发布 swf,这似乎被忽略了。

我知道我可以在 html 页面上使用元标记来指定缩略图、标题和描述,但其中一些内容必须基于 Flash 应用程序内部的计算。

【问题讨论】:

  • 我也遇到了这个问题,并且对解决方案非常感兴趣,因为在你专门给它参数后它会重置它们似乎违反直觉!
  • 我遇到了同样的问题,打算悬赏
  • @stealthcopter, @Rodrigo 你不能,你需要在目标页面上有元数据。也就是说,你可以解决它,检查我的答案。
  • 您的问题得到解答了吗?
  • 很确定你不能再使用 &t 来设置标题了。

标签: flash facebook facebook-sharer


【解决方案1】:

2016 年更新

使用Sharing Debugger 找出您的问题所在。

确保您关注 Facebook Sharing Best Practices。

确保您正确使用了Open Graph Markup。

原答案

我同意这里已经说过的话,但是per documentation on the Facebook developer site,您可能想要使用以下元标记。

<meta property="og:title" content="title" />
<meta property="og:description" content="description" />
<meta property="og:image" content="thumbnail_image" />

如果您无法使用元标记实现目标,并且您需要 URL 嵌入版本,请参阅 @Lelis718 的 answer below。

【讨论】:

  • 太棒了,感谢您指出更改。一旦我确认这确实有效,我将更新我的代码:)
  • 如果我们有一个动态的标题和描述呢??
  • 我没试过,但我想你可以用你的动态值替换静态标题和描述。
  • I have these set,但似乎sharer.php 没有得到它们。它对其他人有用吗?也许这与他们按“喜欢”而不是“分享”按钮有关。
  • @forresto - 试试这个stackoverflow.com/questions/2950189/…
【解决方案2】:

我认为这个网站有解决方案,我现在将对其进行测试。 好像 facebook 改变了 share.php 的参数,所以,为了自定义共享窗口文本和图像,你必须将参数放在“p”数组中。

http://www.daddydesign.com/wordpress/how-to-create-a-custom-facebook-share-button-for-your-iframe-tab/

检查一下。

【讨论】:

  • 这正是我想要的。图形 API 对很多事情都有好处,但只是预先传播一些帖子数据不需要令牌和应用授权。
  • 现在不适合我
  • 这就是我一直在寻找的 URL 结构,用于提供指向第三方图像的链接以及它被视为 URL 的页面。如果有人在看facebook.com/sharer/…
  • 非常有帮助。谢谢! :D
  • 这不再起作用了。你能建议任何替代解决方案吗?
【解决方案3】:

我有一个显示内容的 Joomla 模块...我希望能够在 facebook 上分享这些内容,而不是页面的标题元描述...所以我的解决方法是在服务器上保存一个秘密 .php 文件当它检测到 FB 的

$_SERVER['HTTP_USER_AGENT']

if($_SERVER['HTTP_USER_AGENT'] != 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)') {
    echo 'Direct Access';
} else {
    echo 'FB Accessed';
}

并使用 URL 传递变量,该 URL 使用我想从我的 joomla 模块共享的项目的标题和元描述格式化该特定页面...

name="fb_share" share_url="MYURL/sharer.php?title=TITLE&amp;desc=DESC"

希望这会有所帮助...

【讨论】:

    【解决方案4】:

    你不能,它只是不支持它。

    我不得不问,为什么这些计算只需要在 Flash 应用程序内部进行?

    您必须导航到与您从 Flash 应用程序获得的元数据明显相关的 URL。否则,Flash 应用程序如何知道根据您点击的 URL 获取值。

    选项是:

    • 在页面上计算:在提供页面时,您需要在服务器上进行相同的计算并在页面元数据上发送标题等。
    • 将查询字符串中的元数据发送到您的站点:如果您确实必须让计算远离服务器,另一种技巧是在用户单击以访问您的站点的 URL 中显式设置元数据Facebook。处理页面时,您只需将其复制回元数据部分(不要忘记适当编码)。由于网址大小的限制,这显然是有限的。
    • 将查询字符串中的计算结果发送到您的网站:如果这些计算只为您提供了元数据中使用的几个数字,您可以将其包含在用户单击的 URL 的查询字符串中返回您的网站。这更有可能不会给您带来 URL 大小的问题。

    再

    为什么要投票?这是不对的。您可以 - 支持将自定义标题、描述和图像添加到您的共享中。我一直都这样做。 – Dustin Fineout 3 小时前

    OP 非常明确地表示,他已经知道您可以从页面提供该服务,但希望将值直接传递给 facebook(而不是通过目标页面)。

    此外,请注意,我提供了 3 种不同的选项来解决此问题,其中之一是您稍后发布的答案。您的选择不是 OP 试图这样做的方式,它只是一种解决方法,因为 facebook 的限制。

    最后,正如我所做的那样,您应该提到特定的解决方案是有缺陷的,因为您很容易达到 URL 大小限制。

    【讨论】:

    • 为什么要投票?这是不对的。您可以 - 支持将自定义标题、描述和图像添加到您的共享中。我一直这样做。
    • @Dustin 在否决投票前阅读 ;)。在我的答案更新中查看我的回复
    • 我已经完全阅读了,正如我在之前的评论中所说的,它们都是很好的建议!事实上,它们在某种程度上都体现在我自己的回答中。我不同意您的回答“您不能,它只是不支持它”,这是不正确的,恰好是您回答的第一行。
    • 我很抱歉,但您再次忽略了部分文本“OP 非常清楚地表明他已经知道您可以从页面提供该服务,但想将值直接传递给 facebook (不是通过目标页面)。” ...所以是的,你不能做 OP 想要的,我们的解决方案是变通方法/不是真正将其直接发送到 facebook。
    【解决方案5】:

    一周前我遇到了同样的问题。

    首先我注意到您的 URL 在参数字符串之前有一个 & 符号,但它可能需要有一个问号而不是参数字符串开始,然后在每个附加参数之间加上一个 & 符号。

    现在,您确实需要转义您的 URL,但还需要双重转义您传递给 URL 的 URL 参数(标题或您需要在共享中提供内容的其他内容),如下所示:

    var myParams = 't=' + escape('Some title here.') + '&id=' + escape('some content ID or any other value I want to load');
    var fooBar = 'http://www.facebook.com/share.php?u=' + escape('http://foobar.com/superDuperSharingPage.php?' + myParams);
    

    现在,您需要创建上面链接的 superDuperSharingPage.php,它应该提供您想要的动态标题、描述和图像内容。这样的事情就足够了:

    <?php
        // get our URL query parameters
        $title = $_GET['t'];
        $id = $_GET['id'];
        // maybe we want to load some content with the id I'll pretend we loaded a
        // description from some database in the sky which is magically arranged thusly:
        $desciption = $databaseInTheSky[$id]['description'];
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <title><?php echo $title;?></title>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <meta name="title" content="<?php echo $title;?>" />
      <meta name="description" content="<?php echo $desciption;?>" />
      <!-- the following line redirects to wherever we want the USER to land -->
      <!-- Facebook won't follow it. you may or may not actually want || need this. -->
      <meta http-equiv="refresh" content="1;URL=http://foobar.com" />
    </head>
    <body>
      <p><?php echo $desciption;?></p>
      <p><img src="image_a_<?php echo $id;?>.jpg" alt="Alt tags are always a good idea." /></p>
      <p><img src="image_b_<?php echo $id;?>.jpg" alt="Make the web more accessible to the blind!" /></p>
    </body>
    </html>
    

    如果这对你有用,请告诉我,它基本上对我有用:)

    【讨论】:

    • 太好了,谢谢。这种双重转义的想法为我节省了很多时间。
    【解决方案6】:

    其实我也有类似的问题。我有一个带有多个单选按钮的页面;每个按钮都会在更改时通过 JavaScript 设置页面的标题和描述元标记。

    例如,如果用户选择第一个按钮,元标记会说:

    <meta name="title" content="First Title">
    <meta name="description" content="First Description">
    

    如果用户选择第二个按钮,这会将元标记更改为:

    <meta name="title" content="Second Title">
    <meta name="description" content="Second Description">
    

    ... 等等。我已通过 Firebug 确认代码运行良好(即我可以看到这两个标签已正确更改)。

    显然,Facebook Share 仅提取页面加载时可用的标题和描述元标记。页面加载后对这两个标签的更改将被完全忽略。

    有人对如何解决这个问题有任何想法吗?也就是说,强制 Facebook 获取页面加载后更改的最新值。

    【讨论】:

    • 您发送到 facebook 的 url 必须包含选择的选项以返回您的网站。使用它来确保在页面加载时加载值。有关如何解决该问题的更明确信息,请参阅我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    相关资源
    最近更新 更多