2011-09-29 135 views
3

我編寫了一個Facebook應用程序,它可以作爲頁面上的標籤。Facebook重定向到畫布網址而不是Facebook上的應用程序

這裏是我的config.php文件中包含的配置,如果用戶還沒有批准的應用程序重定向到認證頁面:

<?php 
require_once("database.php"); 
require_once("functions.php"); 
require_once("facebook.php"); 

$config = array 
(
    'database' => array 
    (
     'host' => 'localhost', 
     'name' => '***', 
     'username' => '***', 
     'password' => '***' 
    ) 
); 

$db = new Database($config['database']['host'], $config['database']['name'], $config['database']['username'], $config['database']['password']); 
$db->connect(); 

$facebook = new Facebook(array(
    'appId' => '***', 
    'secret' => '***', 
    'cookie' => true 
)); 

$user = $facebook->getUser(); 

if ($user) 
{ 
    try 
    { 
     $me = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} 

if ($user) 
    $logoutUrl = $facebook->getLogoutUrl(); 
else 
{ 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope' => 'email,user_about_me,user_likes,user_status,read_stream,offline_access,publish_stream,publish_actions' 
    )); 
} 

if (!$user) 
{ 
    echo "<script type=\"text/javascript\">top.location.href = '".$loginUrl."';</script>"; 
} 
?> 

這裏是我的主文件:

<?php 
    require_once("includes/config.php"); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="he" lang="he" dir="rtl"> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=windows-1255" /> 
     <title> 
      שער 7 - הלב הצהוב | מכבי תל אביב 
     </title> 
    </head> 
    <body> 
     <?php 
      $clLike = $facebook->api('/me/likes/204623816223540'); 
      if (!empty($clLike['data'])) 
       echo "I'm a fan!"; 
      else 
       echo "I'm not a fan :("; 
     ?> 
    </body> 
</html> 

正如我之前提到的,這個應用程序作爲一個Facebook頁面上的標籤,而不是一個獨立的Facebook應用程序,因此沒有畫布網址。頁面標籤網址是:http://www.gate7.co.il/fbapps/predictor/

當用戶進入選項卡時,他被重定向到認證頁面(來自config.php),但是當認證過程完成時,用戶被重定向到頁面標籤url(http:// www。 gate7.co.il/fbapps/predictor/)而不是頁面內的標籤。

我試圖將這些行添加到索引文件:

 <script type="text/javascript"> 
     if (top.location.href != "http://www.facebook.com/gate7yellowheart?sk=app_196175180456372") 
      window.location = "http://www.facebook.com/gate7yellowheart?sk=app_196175180456372"; 
    </script> 

它運作良好的Firefox,用戶得到了從頁面選項卡的URL在頁面的實際標籤重定向,但在Chrome它只是造成混亂,並顯示在標籤頁面內。

這是什麼解決方案?

回答

1

在你getLoginUrl()調用,REDIRECT_URI參數組到您的標籤頁,像這樣:

$loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'email,user_about_me,user_likes,user_status,read_stream,offline_access,publish_stream,publish_actions', 
    'redirect_uri' => 'http://www.facebook.com/gate7yellowheart?sk=app_196175180456372' 
)); 
+0

如果你的應用程序的用戶,然後單擊從書籤應用程序的名稱,它會被默認爲畫布。你有檢測畫布的任何解決方案,然後強制重定向回AppPageUrl?謝謝 – Enrique

+0

@Chaney Blu:我有同樣的問題,但這個解決方案不適合我,我的應用程序是在codeIgniter(PHP Framwork)。當用戶第一次運行該應用時,應用會重定向到我的服務器。請幫助我... – Rajnish

相關問題