2013-02-27 1 views
1

Я создаю страницу входа для своего приложения в PHP. В моем приложении используется fconnect для входа в систему. Теперь,Как вы узнаете, открывается ли ваше веб-приложение внутри Facebook (canvass) или снаружи (автономно)?

Если я открою автономное веб-приложение (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 использует iframes. http://stackoverflow.com/questions/5859358/checking-if-my-page-is-embedded-in-an-iframe –

ответ

1

Если ваше приложение открывается внутри холста, вы бы $_REQUEST['signed_request'] набор.

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

Спасибо за ваши ответы. Лемм проверит - что является правильным :), а затем примет это как ответ. –

0

Вы можете проверить, является ли приложение в iframe (Fb холст) или не и действовать соответственно так:

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