你怎么知道你的网络应用程序是在Facebook(canvass)内部还是在外部(独立)开放?

时间:2013-02-27 02:25:20

标签: php facebook facebook-canvas

我正在为PHP创建应用程序的登录页面。我的应用程序使用fconnect登录。现在,

如果我单独打开Web应用程序(www.acdef.com),它应显示fconnect登录。 如果它在facebook(apps.facebook.com/myapp)内打开,它不应该显示fconnect登录,并且根据哪个用户,应该显示fb权限或应用程序登录页面。这就是我所做的

if( (isset($_SERVER['HTTP_REFEREER']) && strpos($_SERVER['HTTP_REFEREER'], "facebook.com") !==false) || (isset($this->request->get['ref']) && strpos($this->request->get['ref'], "facebook.com") !==false))
{ 
   // I am in canvass
}
{
   // I am not in canvass
}

然而,它总是不起作用。很多次,即使在游说中,我也会看到fblogin按钮。

什么是最好的解决方案?

-Ajay

2 个答案:

答案 0 :(得分:1)

如果您的应用在画布内打开,则设置$_REQUEST['signed_request']

if( isset($_REQUEST['signed_request']) )
{ 
   // I am in canvass
}
else
{
   // I am not in canvass
}

答案 1 :(得分:0)

您可以检查应用是否在iframe(fb画布)中 并采取相应行动:

<script type="text/javascript"> 
    if(window==window.top){ 
        top.location.href = '<?=$redirect_url?>';
    } 
</script>