【问题标题】:Facebook send API meta tagsFacebook 发送 API 元标记
【发布时间】:2014-07-30 12:22:20
【问题描述】:

我正在尝试邀请一位朋友加入我的申请,我正在向他发送一条消息说要加入这个游戏。

这里是触发函数的代码。

function invitefbfriends(){
      FB.init({appId: 'XXX', xfbml: true, cookie: true});

      FB.ui({
          method: 'send',
          link: 'http://example.com/game/1',
        });
      }

为什么会选择错误的元数据?

我在相应页面中有元标记,但这是从索引页面http://example.com/ 中挑选元标记

【问题讨论】:

标签: php facebook facebook-graph-api metadata


【解决方案1】:

当用户到达您的内部 URL (.../game/1) 并且未登录时,他们将被重定向到根 URL 并显示登录屏幕。

当 Facebook 的爬虫到达该 URL 时,同样的事情也会发生。他们不是登录用户,因此他们被重定向到登录页面(在您的根 URL 上)并在该页面上显示 og:tags

要规避这种行为,您可以采取某种方式检测请求该页面的用户是“真实”用户还是 Facebook 的爬虫机器人之一。您可以通过两种方式做到这一点:

  1. 检测 Facebook 的一个已知 IP。有一个列表on this page 以及一个用于提取当前 IP 列表的 CLI 命令。
  2. 检测 Facebook 的用户代理字符串(在上面的链接中也提到过)。这种方法不太推荐,因为它比较容易欺骗用户代理。

一旦您检测到请求来自 Facebook,您需要让该请求绕过您的身份验证系统,或者只提供一个包含正确 og:tag 信息的页面。

【讨论】:

  • Lix,我们不能创建一个类似domainname.com/meta 的页面,它只有元数据。没有任何登录身份验证。这样 facebook 可以抓取元数据并拉取它
  • 当然!这听起来像一个好主意。像og.php 这样的东西接受URL,决定应该显示什么资源,而不是只显示元og:tag 信息。这听起来是正确的做法。
  • 这行得通吗,因为我仍然看到 facebook 仍在从主页获取元数据
  • 查看passing your URL through the debugger的结果。仍然有重定向发生。您可以使用此工具来测试您的 Facebook 机器人检测。一旦它开始工作,您将在那里看到正确的 og:tag 值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多