繁体   English   中英

您怎么知道您的Web应用程序是在Facebook内部(画布)还是在外部(独立)打开?

[英]How do you know if your web application is opening inside Facebook (canvass) or outside (standalone)?

我正在使用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按钮。

什么是最好的解决方案?

-阿杰

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

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

您可以检查该应用程序是否位于iframe (fb画布)中,并相应地采取如下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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