海的開發夥伴們,的Oauth實現使用PHP和JS的Facebook SDK
我使用笨(電子商務樣的平臺),實現一個網站登錄到我的Web應用程序。
所以,我有很多過濾器在我的網站基於他們我試圖獲取數據和請求服務。所以用戶必須登錄才能申請服務,所以最後我強迫用戶登錄以繼續(如購買某物)。
問題在於,我使用Javascript SDK實現了Facebook登錄並嘗試獲取訪問權限。並使用FacebookJavaScriptLoginHelper在codeigniter中創建了一個FACEBOOK庫來獲取用戶數據。現在我應該更新所有會話中的用戶詳細信息,並將用戶名動態添加到codeigniter中的當前視圖。
,你可以看看下面有什麼我都試過高達現:
Facebook的Libabry:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
// Autoload the required files
require_once(APPPATH . 'libraries/facebook/autoload.php');
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\FacebookJavaScriptLoginHelper;
use Facebook\GraphObject;
use Facebook\GraphUser;
class Facebook {
var $ci;
var $helper;
var $session;
var $permissions;
public function __construct() {
$this->ci =& get_instance();
$this->permissions = $this->ci->config->item('permissions', 'facebook');
// Initialize the SDK
FacebookSession::setDefaultApplication($this->ci->config->item('api_id', 'facebook'), $this->ci->config->item('app_secret', 'facebook'));
$this->helper = new FacebookJavaScriptLoginHelper();
// No session exists
try {
$this->session = $this->helper->getSession();
} catch(FacebookRequestException $ex) {
} catch(Exception $ex) {
// When validation fails or other local issues
}
}
/**
* Returns the login URL.
*/
public function login_url() {
return $this->helper->getLoginUrl($this->permissions);
}
/**
* Returns the current user's info as an array.
*/
public function get_user() {
if ($this->session) {
$request = (new FacebookRequest($this->session, 'GET', '/me'))->execute();
// Get response as an array
$user = $request->getGraphObject()->asArray();
return $user;
}
return false;
}
public function logout(){
session_start();
session_destroy();
}
}
,在我的控制,我有我的索引功能,這樣
public function index(){
$fb_data = $this->facebook->get_user();
$profile_data=array(
'name'=>$fb_data['name'],
'id' =>$fb_data['id'],
'image'=>'http://graph.facebook.com/'.$fb_data['id'].'/picture?width=300',
'email'=>$fb_data['email'],
'oauthProvider'=>'facebook',
);
$this->session->set_userdata('user_name', $fb_data['name']);
echo json_encode($profile_data);
}
我標題瀏覽:
<?php if($this->session->userdata('user_name')): ?>
<li id="userName" class="dropdown">
<a href="#" id="userNameAnchor" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Welcome <span class="user_name"><?php echo $this->session->userdata('user_name')?></span><span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Account settings</a></li>
<li><a href="<?php echo base_url('redirectoauth/FbLogout')?>">Logout</a></li>
</ul>
</li>
<?php else: ?>
<li id="login"><a href="#socialLogin" data-toggle="modal">Login</a></li>
<?php endif; ?>
Ajax調用
$.ajax({
url:"<?php echo base_url('redirectoauth');?>",
success:function(data){
var data=$.parseJSON(data);
$('.user_name').html(data.name);
$('#userName').css('display','block')
$('#login').css('display','none');
$('#socialLogin').modal('hide');
}
});
任何參考或TUTS,對建築的建議,以解決這個問題。
你不能設置會話所有我們的網站Facebook登錄? – shafiq
@ user1048123找不到你 – saikiran
你得到的是什麼問題? Facebook登錄後無法設置會話嗎? – shafiq