2012-08-11 132 views
0

我包括Facebook登錄到我的網頁,但我有一個問題,首先,代碼:Facebook登錄,重定向bucle

//FACEBOOK LOGIN 
if($_GET['method']=='facebook'){ 
    require("_facebook.php"); 
    $session_fb = $facebook->getSession(); 

    if(!empty($session_fb)) { 
     //Active session, let's try getting the user id (getUser()) and user info (api->('/me')) 
     $uid = $facebook->getUser(); 
     $user = $facebook->api('/me'); 

     if(!empty($user)){ 
      //We have an active session, let's check if we have already registered the user 
      $query = mysql_query("SELECT * FROM ".PREFIX."user WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user['id']); 
      $ds = mysql_fetch_array($query); 
      //If not, let's add it to the database 
      if(empty($ds)){ 
       $query = mysql_query("INSERT INTO ".PREFIX."user (oauth_provider, oauth_uid, username, email) VALUES ('facebook', {$user['id']}, '{$user['name']}', '{$user['email']}')"); 
       $query = mysql_query("SELECT * FROM ".PREFIX."user WHERE userID = " . mysql_insert_id()); 
       $ds = mysql_fetch_array($query); 
      } 
      // this sets variables in the session 
      $_SESSION['oauth_uid'] = $ds['oauth_uid']; 
      $_SESSION['oauth_provider'] = $ds['oauth_provider']; 

      $_SESSION['ws_auth'] = $ds['userID'].":".$ds['password']; 
      $_SESSION['ws_lastlogin'] = $ds['lastlogin']; 
      $_SESSION['referer'] = $_SERVER['HTTP_REFERER']; 
      setcookie("ws_auth", $ds['userID'].":".$ds['password'], time()+($sessionduration*60*60));    
      $login = 1; 

     } 
     else { 
      # For testing purposes, if there was an error, let's kill the script 
      die("There was an error."); 
     } 
    } 
    else { 

     # There's no active session, let's generate one 
     $login_url = $facebook->getLoginUrl(); 
     header("Location: ".$login_url); 
    } 

    //end fblogin 
} 

的問題是,我的代碼不讀取會議和使得重定向:(的無限bucle

+0

就我所知,getSession不是當前php-sdk https://developers.facebook.com/docs/reference/php/中的一種方法,所以它永遠不會被填充或者你沒有使用php-sdk但你自己的系統? – TommyBs 2012-08-11 11:27:55

回答

0

正如TommyBS說,沒有​​在當前的PHP SDK沒有的getSession

而且,記住這一點:

1)在你的應用程序的configur Facebook上的應用程序,應用程序域名,使用Facebook登錄的網站和(如果您需要)Facebook/Page Tab頁面上的應用程序URL字段應該指向您正在重定向的網站。

2)使用official javascript sdk準備您的應用程序,並且不要忘記頻道文件。

3)用適當的P3P headers for facebook iframes準備您的應用程序。