繁体   English   中英

仅在Facebook画布上的Facebook应用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM