检查我的iframe是否在Facebook文档中?

检查我的iframe是否在Facebook文档中?,iframe,cross-domain,facebook-apps,Iframe,Cross Domain,Facebook Apps,我已经创建了一个Facebook应用程序,将我的网站放在一个iframe中 每次请求时,我都想检查该站点是否在Facebook应用程序中,否则我想将用户重定向到Facebook应用程序 我可以使用javascript检查我是否在iframe中: 如果(顶部!=自身) 但我不知道我是否真的在Facebook应用程序中。 跨域安全性阻止我访问父文档的信息。例如,无法访问“top.location.href” 有人能帮我吗?:-) 您可以从facebook的javascript库中检查FB.Canva

我已经创建了一个Facebook应用程序,将我的网站放在一个iframe中

每次请求时,我都想检查该站点是否在Facebook应用程序中,否则我想将用户重定向到Facebook应用程序

我可以使用javascript检查我是否在iframe中:

如果(顶部!=自身)

但我不知道我是否真的在Facebook应用程序中。 跨域安全性阻止我访问父文档的信息。例如,无法访问“top.location.href”


有人能帮我吗?:-)

您可以从facebook的javascript库中检查FB.Canvas命名空间方法。它将在Facebook画布上运行

https://developers.facebook.com/docs/reference/javascript/FB.Canvas.getPageInfo/  
检查你在facebook的iframe、iframe外部或其他iframe中获得的信息


希望这对您有所帮助

Facebook为window.name添加了一个值,以便您可以使用JavaScript进行检查

if(window.name.indexOf('iframe_canvas_fb') != -1){
  // in Facebook
} else {
  // not in Facebook
}

如果用户不在Facebook上,则正文html标记之前的这段脚本应将其重定向回Facebook上的页面:

<script language="JavaScript" type="text/javascript">
<!--
if (self == top) {
    window.location = "http://apps.facebook.com/YOUR_APP_PAGE";
}
-->
</script>
注:

你应用页面上的Facebook用户不太可能关闭了JavaScript,这就是为什么我们可以使用上面的php代码设置重定向等

php不应该真正依赖$u会话或cookie。如果用户在登录到Facebook应用程序后决定访问您的页面,php需要进行页面刷新,才能从会话或cookie中确定他们不再在Facebook中

经过思考:

所有这些信息都应该放在Facebook SDK上,因为管理重定向和应用程序检测是Facebook可怕文档的噩梦

希望这能帮到你:)

如果(window.self=“){看起来肯定是错误的,因为它没有可比性。但是即使使用==它也不起作用。
<script language="JavaScript" type="text/javascript">
<!--
if (window.self = "http://apps.facebook.com/") {
    var element = document.getElementById('html');
    element.className = "facebook"; 
}
-->
</script>
<html id="html" xmlns:fb="http://www.facebook.com/2008/fbml">
if(!empty($_POST['signed_request'])){
//do something with php here...
}