如果他/她试图打开我的应用托管网站,我想要将用户重定向到我的应用的代码。 对于前: 我的应用链接:https://apps.facebook.com/gaming-zone/ 应用托管链接:http://gaming-zone.herokuapp.com/
我已经找到了一些代码,但这些代码会不断重定向用户,如果他在Facebook上使用我的应用程序并且他正在玩任何游戏,那么它也会将用户重定向到应用主页。 我想要只有当他访问我的托管网站时重定向用户的确切代码。
这些是我发现的代码:
<script type='text/javascript'>
if (window.top.location == window.location)
window.top.location = 'https://apps.facebook.com/gaming-zone/';
</script>
答案 0 :(得分:0)
问题是您无法读取window.top.location值。你只能写它。很奇怪,但就是这样。
选项1:将您的应用安装到页面标签页并创建一个类似门。就像门将在facebook iframe总是返回false。
选项2:在后端加载页面时检查已签名的请求数据。
选项3:其他选项是检查顶部网址,但是在后端检查。
答案 1 :(得分:0)
以下是我使用的代码:
<script type="text/javascript">
function NotInFacebookFrame() {
return top === self;
}
function ReferrerIsFacebookApp() {
if(document.referrer) {
return document.referrer.indexOf("apps.facebook.com") != -1;
}
return false;
}
if (NotInFacebookFrame()) {
top.location.replace("https://apps.facebook.com/YOUR_APP_NAMESPACE");
}
</script>
这会检查他们当前是否在Facebook框架中,并且仅在时它会将它们重定向到“https://apps.facebook.com/YOUR_APP_NAMESPACE”
注意:您可以在应用中的任何页面上使用此功能,只需相应更改网址。
例如:如果您在http://YourDomain.com/anotherpage.php中使用此功能,则可以将上面代码中的网址更改为https://apps.facebook.com/YOUR_APP_NAMESPACE/anotherpage.php