如何强制Facebook将https用于标签网址

时间:2013-01-03 10:32:33

标签: facebook tabs

我的服务器仅在根级别使用带有htaccess重定向的https,如果用户使用http连接从FB页面调用我的选项卡应用程序,则会丢失已签名的请求。 大家都知道解决方案吗? 如何在调用标签时强制Facebook使用https? 谢谢 LUC

2 个答案:

答案 0 :(得分:0)

  

如何在调用标签时强制Facebook使用https?

理论上,应该使用HTTP状态代码307(临时重定向)和308(永久重定向),因为它们要求方法保持不变,因此客户端必须获取已重定向到的资源再次使用相同的数据进行POST。

但是,我没有经验,这对于那里的浏览器有多好。

使用JavaScript可能更好地“重定向”客户端。当然,这需要一个仅使用HTTP的资源,并且将服务器端重定向到它的HTTPS对应物。


在未来,这个“问题”将自行消失,我认为 - 自去年年底Facebook宣布将把所有用户转移到HTTPS之后;所以我想从现在开始我们不再需要为canvas / page选项卡应用程序提供HTTP URL,而只使用一个HTTPS版本。

答案 1 :(得分:0)

我以这种方式解决了:

在FBapp管理器中,我使用http url作为在接受http的不同服务器上创建的页面。 在这个页面中,我使用了以下代码。      

 $signed_request = $facebook->getSignedRequest();
 $page_id   = $signed_request["page"]["id"];
 $fql_query_url = "https://graph.facebook.com"
    ."/$page_id?fields=link"
."";
try {
    $fql_query_result = @file_get_contents($fql_query_url);
    $fql_query_obj = json_decode($fql_query_result, true);
} catch(Exception $o){   }
 $pageinfo = $fql_query_obj[link];
 $pageinfo = str_replace("http://","https://",$pageinfo);
 $tabpage = "$pageinfo"."?sk=app_$appId";
 echo "
 <!-- force tab iframe -->
 <script type=\"text/javascript\">
  top.location.replace('$tabpage');
 </script>
";
 ?>

这就是全部