Facebook iFrame应用程序链接发送到外面

时间:2009-10-23 12:32:39

标签: facebook iframe hyperlink

这里有FB专家吗?在FB论坛上阅读了大约15个帖子后,我不知道下一步该去哪了=(

我们有一个iFrame FB应用:http://apps.facebook.com/myapp

应用中使用的所有链接都是:href =“http://www.mysite.com/index.php?parm=value ...”

现在当我点击任何链接时,我已离开Facebook并登陆我们的服务器。

真的不知道如何解决这个问题!使用与Facebook服务器的链接不是一个选项。

谢谢你们的一些提示!

3 个答案:

答案 0 :(得分:2)

这是因为Facebook丢失了所有身份验证变量,无法确定并发请求属于同一会话,从而导致iframe“爆发”并最终导致您自己的服务器页面而非Facebook内部

任何时候通过Facebook提供页面,在您的服务器上收到的请求将包括Facebook发送的一些GET变量,这些变量统称为“Facebook身份验证签名”,向您的服务器证明请求实际上是有效并源自Facebook;同样,当您的服务器发送响应时,包含这些变量证明Facebook(通过session_key,api_key和sig摘要的组合)您的服务器是它声称的应用程序。

为了在iframe应用程序中保持会话而不会破坏您的服务器,您必须在每个链接的查询字符串中包含这些参数。这是一个简单的函数,它将为您生成查询字符串,因此您只需将此函数的结果附加到应用程序中的每个链接URL:

function fb_sig_urlQueryString() {
  $query = '';
  foreach ($_GET as $k => $v) {
    if (strpos($k, 'fb_sig') === 0) {
      if ($i++ > 1) $query .= '&';
      $query .= $k.'='.$v;
    }
  }
  return $query;
}

答案 1 :(得分:0)

您的意思是点击iframe中的链接会转到您的网站intead吗?如果你这样做,你可以尝试将html锚点的“target”属性设置为“_self”,这应该打开iFrame中的链接。

答案 2 :(得分:0)

我遇到了这个问题。将所有FB查询字符串参数从初始IFrame附加到我链接中的每个网址后,它们就会在右侧窗口中打开。

请点击此处查看示例http://www.keywordintellect.com/facebook-development/facebook-iframe-authentication-across-pages-ajax-requests/