[英]facebook app only on facebook canvas
我希望仅在Facebook画布上访问我的Facebook应用程序,而不在我的网站上访问。 现在,如果我访问http://mywebdomain.com/facebook/ ,将显示该应用程序,但我想将用户重定向到https://apps.facebook/myApp/
我的facebook对象是“简单的”,类似这样:
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'yyy',
'cookie' => true
));
在$ _SERVER [“ HTTP_HOST”]中查看已使用了哪个地址访问您的页面,并在必要时执行301重定向到https://apps.facebook/myApp/
if ($_SERVER["HTTP_HOST"] == "Your domain") {
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://apps.facebook/myApp/");
}
else
{
... your app goes here.
}
?>
不过,在实现重定向之前,我将创建一个显示$ _SERVER [“ HTTP_HOST”]值的测试页,然后从facebook内部以及直接从您的站点访问代码。 如果它们不同,那么您很好。
为了安全起见,我将自己进行测试。
编辑
实际上,我刚刚进行了一些测试,您需要检查$ _SERVER [“ HTTP_ORIGIN”]的存在。
如果您从Facebook拨打电话,它将存在并且包含Facebook链接。 如果您来自网站本身,则该网站将不存在。
为了更好地了解正在发生的事情,请将其作为您的第一个程序:
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
这就是我发现HTTP_ORIGIN的方式。
然后,您应将以上内容替换为:
<?php
if (isset($_SERVER['HTTP_ORIGIN']) && $_SERVER['HTTP_ORGIN'] === "https://apps.facebook.com"){
... your app.
}
else
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://apps.facebook/myApp/");
}
作为HTTP_ORIGIN的替代方法,您可以使用HTTP_REFERER,它应包含完整的URL,而不仅仅是Facebook组件。 否则,其他人可以建立一个Facebook应用程序并链接到您的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.