2010-12-18 51 views

回答

1

因此,這裏的一些問題是我以前使用Facebook PHP SDK一招與我的CodeIgniter應用程序。從SDK代碼中,取出Facebook.php並取出FacebookApiException類,並將其放入一個名爲FacebookApiException.php的新文件中。現在,我將facebook.php和FacebookApiException.php放入模型文件夾中,並將它們用作常規模型。

以下是我用於驗證用戶身份和通過Facebook訪問應用程序的代碼。

function facebook_login(){ 
     # Creating the facebook object 
     $facebook = new Facebook(array(
      'appId' => 'XXXXXXXXXXXXXXXXX', 
      'secret' => 'XXXXXXXXXXXXXXXXX', 
      'cookie' => true 
     )); 

     # Let's see if we have an active session 
     $session = $facebook->getSession(); 

     if(!empty($session)) { 
      # Active session, let's try getting the user info 
      try{ 
       $uid = $facebook->getUser(); 
       $param = array(
        'method' => 'users.getinfo', 
        'uids'  => $uid, 
        'fields'  => 'uid, username, name, profile_url, pic_big', 
        'callback' => '' 
       ); 
       $user = $facebook->api($param); 
      } catch (Exception $e){ 
       $url = $facebook->getLoginUrl(array( 
         'req_perms' => 'user_about_me, email, status_update, publish_stream, user_photos', 
         'next' => site_url() . 'user/facebook_login', 
         'cancel' => site_url() 
        )); 
       redirect($url); 
      } 

      if(!empty($user)){ 
       # User info ok? 
       print_r($user); 

        // Add user oauth token and info to DB, and then redirect to some controller in your application. 
        redirect('/'); // redirect to homepage 

      } 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 
      $url = $facebook->getLoginUrl(array( 
         'req_perms' => 'user_about_me,email,status_update,publish_stream,user_photos', 
         'next' => site_url() . 'user/facebook_login', 
         'cancel' => site_url() 
        )); 
      redirect($url); 
     } 
    } 

希望這會有所幫助。

+0

感謝您的回覆,我已經在做這個確切的事情(如'我自己wrapper')。如果有更多CodeIgniter-ish,我只是漫步。但是CodeGo.net,$ _REQUEST ['...']'工作_ CodeGo.net,與CodeIgniter,尤其是所有mod_rewrite魔術? – David 2010-12-19 19:14:45

+0

也許如果你可以更具體的問題,你$ _REQUEST [...]我可以幫助回答具體問題。到目前爲止,我還沒有與CodeIgniter的PHP SDK有任何問題。 – Shivaas 2010-12-20 03:29:46

2

您可以在Codeigniter中輕鬆使用官方PHP Facebook SDK。唯一的問題就是Facebook SDK需要$ _REGISTER和笨,你不用它(因爲mod_rewrite的的)

這裏是小的解決方案:

1 - 這是$ _REGISTER問題。使用此以前裝載Facebook類:

parse_str($_SERVER['QUERY_STRING'], $_REQUEST); 

2- Facebook的SDK有2個文件。將它們放入一個文件並將其保存到您的應用程序/幫助程序文件夾facebook_helper.php。然後加載和使用是這樣的輕鬆是這樣的:

$this->load->helper('facebook'); 
$facebook = new Facebook(array('appId' => 'XXX', 'secret' => 'xxx')); 
// ... The rest is not different. You can read Facebook SDK examples