检查我的iframe是否在Facebook文档中?
我已经创建了一个Facebook应用程序,将我的网站放在一个iframe中 每次请求时,我都想检查该站点是否在Facebook应用程序中,否则我想将用户重定向到Facebook应用程序 我可以使用javascript检查我是否在iframe中: 如果(顶部!=自身) 但我不知道我是否真的在Facebook应用程序中。 跨域安全性阻止我访问父文档的信息。例如,无法访问“top.location.href”检查我的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的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...
}