2012-03-18 15 views
1

私はlocalhostでFacebookのログインをしようとし、いくつかの問題に直面しています。Facebook Connect Codeigniter

まず、私はCodeigniterを使用します。 Facebookのログインを行うために、図書館でFacebook、base_facebook、fb_ca_chain_bundle.crtを含むFacebook SDKを展開しました。

は、その後、私はあるモデルディレクトリの下Facebook_Model.phpを作成することにしました:

<?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); 
    } 

}

それから私は、私のモデルを使用するためには、コントローラを作成しました:

<?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); 
    } 

} 

もちろん、ビュー:

<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> 
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の部分はキーが含まれています:

enter image description here

iは、プリントをfb_dataどんなことを疑問に思いました。

この情報をコピーしてブラウザに貼り付けてください。同じエラーが発生します。何が問題になるだろう
enter image description here

これらは私のFBのアプリの設定ですか?エラーの原因は何ですか?

+2

を提出しますかエラーログにレコードがありますか? –

+1

また、Facebookのユーザーステータスと情報を取得するためにモデルを使用する理由 – ifaour

+0

私は同じ問題を抱えています –

答えて

0

http://localhost:81/videoyorum 

それとも、それが動作しない場合は、(ウェブホスティングプロバイダを取得する)非ローカルサーバーを使用してみてくださいであるためにあなたの$ fb_data_arrayに

localhost:81/videoyorum/ 

を設定してみてください。

0

あなたのローカルホスト名をドメイン名に変更してください。facebookアプリケーションはローカルホストアドレスをサポートしていないためです。
File Path-> C:\WINDOWS\system32\drivers\etc
これは、ホストの一例ですが、あなたが唯一のサイトのURLにポートせずに、ローカルIPアドレスまたはローカルホストを保つことによって試したことがありますか?
127.0.0.1 localhost loopback
::1 localhost
127.0.0.1 localhost
127.0.0.1 facebooktest.com
Read this