2013-02-27 78 views
1

我正在为我的应用程序在PHP中创建一个登录页面。我的应用程序使用fconnect登录。现在,您如何知道您的Web应用程序是在Facebook(Canvass)还是在外部(独立)内部打开?

如果我打开Web应用程序standalone(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

+0

这应该回答你的问题。 Facebook使用iframe。 http://stackoverflow.com/questions/5859358/checking-if-my-page-is-embedded-in-an-iframe – 2013-02-27 04:55:05

回答

1

如果您的应用程序被打开画布里面,你必须$_REQUEST['signed_request']集。

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

感谢您的回答。让我检查 - 什么是正确的:)然后将接受作为答案。 – 2013-02-27 12:37:57

0

您可以检查应用程序是否在iframe(FB帆布)或不 并采取相应行动,像这样:

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