我嘗試在本地主機上執行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>
我不知道什麼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應用程序設置:
什麼錯?什麼導致錯誤?
有你在只保留當地的IP或本地主機端口沒有在網站的網址試過嗎?錯誤日誌中是否有任何記錄? – 2012-03-18 10:42:04
此外,爲什麼使用模型來獲得Facebook的用戶狀態和信息? – ifaour 2012-03-19 06:48:41
我遇到同樣的問題 – 2012-04-23 23:16:17