2012-03-18 83 views
1

我嘗試在本地主機上執行Facebook登錄並遇到一些問題。Facebook Connect Codeigniter

首先,我使用Codeigniter。爲了做Facebook登錄,我在庫中提取了Facebook SDK,其中包括Facebook,base_facebook和fb_ca_chain_bundle.crt。

於是我決定創建模型目錄下的Facebook_Model.php是:

<?php 

if (!defined('BASEPATH')) 
    exit('No direct script access allowed'); 

class Welcome extends CI_Controller { 

    function __construct() { 
     parent::__construct(); 
     $this->load->model('Facebook_Model'); 
     $this->load->helper('url'); 
    } 

    public function index() { 
     $this->load->view('welcome_message'); 
     $fb_data = $this->session->userdata('fb_data'); 

     print_r($fb_data); 


      $data = array(
       'fb_data' => $fb_data, 
      ); 



     $this->load->view('welcome_message', $data); 
    } 

} 

<?php 
class Facebook_model extends CI_Model { 

    public function __construct() 
    { 
     parent::__construct(); 

     $config = array(
         'appId' => 'XXXXXXXXXXXXXXXXXXXX', 
         'secret' => 'XXXXXXXXXXXXXXXXXXXX', 
         'fileUpload' => true, // Indicates if the CURL based @ syntax for file uploads is enabled. 
         ); 

     $this->load->library('Facebook', $config); 

     $user = $this->facebook->getUser(); 

     // We may or may not have this data based on whether the user is logged in. 
     // 
     // If we have a $user id here, it means we know the user is logged into 
     // Facebook, but we don't know if the access token is valid. An access 
     // token is invalid if the user logged out of Facebook. 
     $profile = null; 
     if($user) 
     { 
      try { 
       // Proceed knowing you have a logged in user who's authenticated. 
       $profile = $this->facebook->api('/me?fields=id,name,link,email'); 
      } catch (FacebookApiException $e) { 
       error_log($e); 
       $user = null; 
      } 
     } 

     $fb_data = array(
         'me' => $profile, 
         'uid' => $user, 
         'loginUrl' => $this->facebook->getLoginUrl(
          array(
           'scope' => 'email,user_birthday,publish_stream', // app permissions 
           'redirect_uri' => 'localhost:81/videoyorum/' // URL where you want to redirect your users after a successful login 
          ) 
         ), 
         'logoutUrl' => $this->facebook->getLogoutUrl(), 
        ); 

     $this->session->set_userdata('fb_data', $fb_data); 
    } 

}

然後我才能使用我的模型,它是創建控制器

當然還有一個視圖:

<body> 
<div> 
    <?php if(!$fb_data['me']): ?> 
    Please login with your FB account: <a href="<?php echo $fb_data['loginUrl']; ?>">login</a> 
    <!-- Or you can use XFBML --> 
    <div class="fb-login-button" data-show-faces="false" data-width="100" data-max-rows="1" data-scope="email,user_birthday,publish_stream"></div> 
    <?php else: ?> 
    <img src="https://graph.facebook.com/<?php echo $fb_data['uid']; ?>/picture" alt="" class="pic" /> 
    <p>Hi <?php echo $fb_data['me']['name']; ?>,<br /> 
    <a href="<?php echo site_url('topsecret'); ?>">You can access the top secret page</a> or <a href="<?php echo $fb_data['logoutUrl']; ?>">logout</a> </p> 
    <?php endif; ?> 
</div> 
</body> 

enter image description here

我不知道什麼fb_data打印:

Array ([me] => [uid] => 0 [loginUrl] => https://www.facebook.com/dialog/oauth?client_id=XXXXXXX&redirect_uri=localhost%3A81%2Fvideoyorum%2F&state=XXXXXXXXXXX&scope=email%2Cuser_birthday%2Cpublish_stream [logoutUrl] => https://www.facebook.com/logout.php?next=http%3A%2F%2Flocalhost%3A81%2Fvideoyorum%2F&access_token=XXXXXXXXX%XXXXXXXXXX) 

XXXX部分包括鍵。

我複製了此信息並將其粘貼到我的瀏覽器。它給出同樣的錯誤。

這些都是我的FB應用程序設置:
enter image description here

什麼錯?什麼導致錯誤?

+2

有你在只保留當地的IP或本地主機端口沒有在網站的網址試過嗎?錯誤日誌中是否有任何記錄? – 2012-03-18 10:42:04

+1

此外,爲什麼使用模型來獲得Facebook的用戶狀態和信息? – ifaour 2012-03-19 06:48:41

+0

我遇到同樣的問題 – 2012-04-23 23:16:17

回答

0

嘗試在$ fb_data_array設置

localhost:81/videoyorum/ 

http://localhost:81/videoyorum 

或者,如果還是不行,請嘗試使用非本地服務器(獲得一個網站託管服務提供商)。

0

將您的本地主機名稱更改爲域名。因爲facebook應用不支持本地主機地址。
File Path-> C:\WINDOWS\system32\drivers\etc
這是主機文件示例
127.0.0.1 localhost loopback
::1 localhost
127.0.0.1 localhost
127.0.0.1 facebooktest.com
Read this