2011-07-26 55 views
0

我有一個名爲fbmain.php的文件,它是我的Facebook應用程序的認證部分。
但它不顯示認證窗口?Facebook身份驗證窗口不顯示?

//fbmain.php 

<?php 
    //facebook application 
    //set facebook application id, secret key and api key here 
    $fbconfig['appid' ] = "MY_APP_ID"; 
    $fbconfig['secret'] = "MY_APP_SECRET"; 

    $uid   = null; //facebook user id 

    try{ 
     include_once "facebook.php"; 
    }catch(Exception $o){ 
     echo '<pre>'; 
     print_r($o); 
     echo '</pre>'; 
    } 
    // Create our Application instance. 
    $facebook = new Facebook(array(
     'appId' => $fbconfig['appid'], 
     'secret' => $fbconfig['secret'], 
     'cookie' => true, 
    )); 

    //Facebook Authentication part 
    $session = $facebook->getSession(); 

    $loginUrl = $facebook->getLoginUrl(
      array(
      'canvas' => 1, 
      'fbconnect' => 0, 
      'req_perms' => 'email,publish_stream,status_update,user_birthday,user_location,user_work_history,user_likes,user_photos' 
      ) 
    ); 

    if (!$session) { 
     echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
     exit; 
    } 
    if ($session) { 
    echo "<br/>session ok"; //It create a session and disply 'session ok' string 
     try { 
      $uid  = $facebook->getUser(); 
     } catch (FacebookApiException $e) { 
      echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
      exit; 
     }  
    } 

?> 

任何人都可以幫助我嗎?

回答

0

您正在使用哪個版本的PHP-SDK?

我認爲你可以擺脫getSession()並只使用getUser()

改變你的代碼如下,然後再試一次..

$uid  = $facebook->getUser(); 

if ($uid) { 
// do some api calls or something else 
} 
else 
{ 
    echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>"; 
}  
的index.php中

否則只是包括你fbmain.php並使用圖像按鈕,您可以鏈接$ loginurl ..

+0

它不工作的朋友。它獲得變量$ uid的價值,並去如果loop.Never去其他循環,並沒有顯示身份驗證窗口。我用新創建的應用程序嘗試了這一點(我正在使用3.0版本的PHP-SDK) – Roshanck