这里有FB专家吗?在FB论坛上阅读了大约15个帖子后,我不知道下一步该去哪了=(
我们有一个iFrame FB应用:http://apps.facebook.com/myapp
应用中使用的所有链接都是:href =“http://www.mysite.com/index.php?parm=value ...”
现在当我点击任何链接时,我已离开Facebook并登陆我们的服务器。
真的不知道如何解决这个问题!使用与Facebook服务器的链接不是一个选项。
谢谢你们的一些提示!
答案 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附加到我链接中的每个网址后,它们就会在右侧窗口中打开。