打开图表选项卡链接的图表信息

时间:2011-12-06 21:21:03

标签: facebook opengraph

将链接直接发布到Facebook页面上的标签页时,

https://www.facebook.com/PAGENAME?sk=app_APPID

Facebook选择了网​​页的开放式图表<meta>标签,这意味着链接帖子与网页的个人资料图片,名称以及“Page•n这样的说明”相关联。

我原本希望Facebook使用应用HTML中的og <meta>标签,以便自定义链接帖子。

在链接帖子中提供带有自定义内容的Facebook页面上特定标签的直接链接的最佳方式是什么?

5 个答案:

答案 0 :(得分:9)

我可以看到完成此任务的最佳方式是在网站(www.example.com/fb/redirectorForApp.html)上托管重定向器页面,该页面在javascript超时时进行重定向。该重定向器页面包含您要指定的og标记。重定向将使人员登陆https://www.facebook.com/PAGENAME?sk=app_APPID。 javascript重定向的优点在于重定向不是由linter运行的,因此它可以拾取正确的og:标签,同时还允许用户直接进入页面选项卡。祝你好运!

答案 1 :(得分:5)

由于您的页面标签的内容位于iFrame内,因此Facebook刮刀将始终首先看到iFrame外部的元标记,这些元标记由Facebook设置并描述您的Facebook页面。尝试Facebook tool中的网址,并在页面底部查看抓取工具为您的网址看到的内容。很遗憾,您无法在iFrame中更改这些Facebook元标记。这就是为什么实现你想要的唯一方法是通过重定向。我在使用以下代码之前已经完成了这个:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" xmlns:og="http://ogp.me/ns#">
    <head>

        <!-- Facebook meta tags -->
        <meta property="og:title" content="bla"/>
        <meta property="og:url" content="https://yourdomain.com/redirect.html"/>
        <meta property="og:image" content="https://yourdomain.com/thumb.png"/>
        <meta property="og:site_name" content="bla"/>
        <meta property="fb:admins" content="1234"/>
        <meta property="og:description" content="bla"/>
        <meta property="og:type" content="website"/>
        <meta property="og:video" content="https://yourdomain.com/bla.swf?param=bla"/>
        <meta property="og:video:width" content="398"/>
        <meta property="og:video:height" content="224"/>
        <meta property="og:locale" content="de_DE"/>

        <script type="text/javascript" src="swfobject.js"></script>
    </head>
    <body>
        <!--  Check whether inside facebook -->
        <script type="text/javascript">
            function NotInFacebookFrame() {
                return top === self;
            }
            function ReferrerIsFacebookApp() {
                if(document.referrer) {
                    return document.referrer.indexOf("facebook.com") !== -1;
                }
                return false;
            }
            if (NotInFacebookFrame() || ReferrerIsFacebookApp()) {
                top.location.replace("https://www.facebook.com/PAGENAME?sk=app_APPID");
            }
        </script>
        <!-- content here -->
   </body>
</html>

答案 2 :(得分:2)

我是新用户,所以我无法评论DMCS的答案: - )

但我必须这样做一次,它也是通过“重定向器”。但是,没有必要设置超时,只需:

<html>
  <head>
    <meta ...> <!-- OG tags -->
    <script type="text/javascript">
      location = 'http://www.facebook.com/PAGENAME?sk=app_APPID';
    </script>
  </head>
</html>

所以没有延迟。

顺便说一句。如果您选中标签网址here,则会看到它通过og:url标记的重定向路径,该标记从https://www.facebook.com/PAGENAME?sk=app_APPID重定向到https://www.facebook.com/PAGENAME。也许您应该检查将默认着陆选项卡设置为选项卡是否会改变任何内容。

答案 3 :(得分:1)

我也一直在使用重定向方法,但是用户有动机分享内容(例如在投票应用中)是不够的:他们经常从浏览器中复制页面标签网址,共享内容最终结束具有与之关联的通用页面配置文件信息。

但好消息是有一个解决方案!它虽然相当复杂 - 特别是如果你有多个子页面有不同的og:标签(例如在投票比赛中)。

如何运作?

此解决方案是在服务器的页面上设置ogtags以获得一个重定向到画布应用页面的规范网址 - 允许画布应用以这种方式指定自己的自定义ogtags。如果您然后将所有用户重定向到正确的页面选项卡,则画布页面实际上将无法查看,但它将允许您为页面选项卡应用程序提供自定义ogtags。

步骤

  1. 为您的应用创建一个画布页面(使用与页面标签相同的网址)
  2. 像往常一样
  3. 将og:标签添加到您的页面
  4. 将og:url参数设置为画布应用的网址(http://apps.facebook.com/yourapp/...etc
  5. 添加代码,以便当请求来自页面选项卡iframe之外(在画布中或直接在您的服务器上)时,您将用户重定向到正确的页面选项卡

答案 4 :(得分:0)

我有同样的问题......所以这就是我的所作所为:

  • 重定向页面:将获得参数&amp;的页面设置共享服务的标签或至少OpenGraph标签。然后,此页面将创建一个URL到第二页(Facebook Pagetab),如下所示:

    //{facebook-page.link}/?sk=app_{your-app-id}&app_data=X
    

要获取{facebook-page.link},请参阅此示例请求:
参见示例:https://graph.facebook.com/200866110154
请参阅文档:https://developers.facebook.com/docs/reference/php/facebook-api/

不要每次都立即进行重定向,不起作用。而是在某些条件下重定向。例如:

    if (strpos($_SERVER['HTTP_REFERER'], '//www.facebook.com/')) {
        drupal_add_js('window.location = "' . $url_final . '"', 'inline');
    }   

请记住,要制作网址,请使用从Facebook获取的网页链接属性,而不是网页的ID,否则您将丢失已签名请求中的app_data参数。

  • Facebook Pagetab:在Facebook页面的标签页面中调用的页面。此页面将获得带有app_data的SignedRequest,并将加载最终用户将看到的特定内容。

请记住,app_data也可以是数组(或序列化对象):

      app_data[var1]=value1&app_data[var2]=value2

提示:如果您正在使用Drupal,则可以避免最终重定向,只需将$ _GET ['q']覆盖到页面需要。这样你就不会引导Drupal进行另一次重定向。您可以使用hook_init来实现此目的。

提示:将您的请求保存到Facebook API,以加快未来的通话速度。对图API的每个请求至少需要300毫秒。数据库访问显然更快。