Javascript 在Facebook登录状态脚本运行之前,我是否可以停止加载HTML页面?

Javascript 在Facebook登录状态脚本运行之前,我是否可以停止加载HTML页面?,javascript,facebook,facebook-login,Javascript,Facebook,Facebook Login,我使用Facebook Javascript SDK强制要求访问我网站的用户必须登录Facebook。如果访问者没有登录Facebook,我将使用StatusChangeCallback函数将他们重定向到Facebook登录页面。我复制了下面脚本的一个片段,它位于我网页的Head标记中 这很好,只是我注意到在脚本将访问者重定向到登录页面之前,我的页面会立即加载。这意味着访问者可以单击“停止”按钮并绕过此重定向功能 有没有办法防止在我的Facebook登录脚本完成之前加载页面? <s

我使用Facebook Javascript SDK强制要求访问我网站的用户必须登录Facebook。如果访问者没有登录Facebook,我将使用StatusChangeCallback函数将他们重定向到Facebook登录页面。我复制了下面脚本的一个片段,它位于我网页的Head标记中

这很好,只是我注意到在脚本将访问者重定向到登录页面之前,我的页面会立即加载。这意味着访问者可以单击“停止”按钮并绕过此重定向功能

有没有办法防止在我的Facebook登录脚本完成之前加载页面?

    <script>
  function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    if (response.status === 'connected') {
      //Continue loading the page 
    } else if (response.status === 'not_authorized') {
      window.location.href = "facebook.html";
    } else {
      window.location.href = "facebook.html";
    }
  }

函数statusChangeCallback(响应){
log('statusChangeCallback');
控制台日志(响应);
如果(response.status===“已连接”){
//继续加载页面
}else if(response.status===“未授权”){
window.location.href=“facebook.html”;
}否则{
window.location.href=“facebook.html”;
}
}

您可以使用css隐藏页面

html { visibility:hidden; }
然后在脚本使用javascript/jquery运行后将其设置为可见

$(document).ready(function() {
  document.getElementsByTagName("html")[0].style.visibility = "visible";
});

你能把检查功能放在它们来自的页面上吗?可能是他们点击的链接?

人们在看到内容之前登录对您来说有多重要?如果“非常”重要,那么您应该知道,大多数仅依赖JS的东西都是可以绕过的

例如,这似乎是可行的(假定您的登录页上有不需要登录的内容):

但是,没有什么可以阻止使用浏览器控制台的用户看到该URL并直接访问它

我假设FB在
响应中向您发送某种令牌。您可以将其作为一种“密钥”添加到ajaxy内容加载中,但同样,不需要额外的服务器端身份验证层,很容易从浏览器中伪造


通过使用旧的Apache“反热链接”技巧使
'path/to/authenticated/content.html'
只响应来自同一服务器的请求,您可能会获得额外的1/2安全点

是的,但是如果你想让用户在登录之前看不到你的页面,任何客户端解决方案都是无用的。这很有效,非常感谢!我在代码if(response.status=='connected')之后添加了document.getElementsByTagName(“html”)[0].style.visibility=“visible”,我已经准备好了。谢谢我花了几天时间试图想出一个不涉及太复杂的问题的解决方案,这太简单了!没问题:)很高兴它能帮上忙EDI最初走上这条路,创建了一堆页面和重定向页面(例如content.php和content1.php),但是是的,这意味着任何人都可以通过访问content1.php绕过这一点。我网站上的信息无论如何都不敏感;我最想要的是facebook登录,因为我有几个表单来收集信息,看起来好像有人运行了一个脚本,用一堆伟哥广告填充我的“数据库”(读:json文件)。我使用了上面Lakutis的建议,我认为这为我的需要提供了足够的迷惑。我不认为这是Apache的伎俩。但是,是的,这是一件很棘手的事情。
...
if (response.status === 'connected') {
   // jQuery for brevity
   $('#your-wrapper').load('path/to/authenticated/content.html');
} else if (response.status === 'not_authorized') {
   window.location.href = "facebook.html";
} ...