Php 带FB API 4的Codeigniter V2.x
我想使用CodeIgniter创建一个简单的facebook web应用程序,以便能够发布到链接到我的facebook帐户的页面 目前这是我的代码: 控制器:Php 带FB API 4的Codeigniter V2.x,php,facebook,codeigniter,facebook-graph-api,Php,Facebook,Codeigniter,Facebook Graph Api,我想使用CodeIgniter创建一个简单的facebook web应用程序,以便能够发布到链接到我的facebook帐户的页面 目前这是我的代码: 控制器: function facebook(){ $this->config->load('facebook', TRUE); $this->load->library('facebook'); $login_url = $this->facebook->get_user();
function facebook(){
$this->config->load('facebook', TRUE);
$this->load->library('facebook');
$login_url = $this->facebook->get_user();
echo $login_url;
}
图书馆:
我确实使用了粘贴在这里的代码:(本·马歇尔)
默认情况下,库代码不打印相应的异常。因此,我必须扩展代码,使其看起来像这样(在构造函数上):
有人能为我提出一个可能的解决方案吗?有人成功地用CI开发了FB API 4吗?那么您需要编写会话_start();在将在php页面上启动会话的页面开始处 此外,如果您可以从autoload.php配置文件自动加载facebook库,这将很好
这方面运气好吗?我也一样issue@seesoe我放弃了这个。事实证明,没有直接的解决方案。我通过打电话到这个API建立了自己的库,经过大量的搜索,我终于找到了它。事实证明,新SDK有两个函数可以直接调用本机php会话。因此,您必须扩展该类并使其使用codeigniter会话。希望这能帮助任何有这个问题的人!
public function __construct() {
$this->ci =& get_instance();
$this->ci->load->library('session');
if (!isset($_SESSION)){
session_start();
}
FacebookSession::setDefaultApplication(
$this->ci->config->item('api_id', 'facebook'),
$this->ci->config->item('app_secret', 'facebook')
);
$this->helper = new FacebookRedirectLoginHelper($this->ci->config->item('redirect_url', 'facebook'));
if($this->ci->session->userdata('fb_token')){
$this->session = new FacebookSession( $this->ci->session->userdata('fb_token'));
// Validate the access_token to make sure it's still valid
try {
if (!$this->session->validate()){
$this->session = false;
}
}catch(Exception $e){
// Catch any exceptions
$this->session = false;
}
}else{
try {
$this->session = $this->helper->getSessionFromRedirect();
}catch(FacebookRequestException $ex){
echo "<pre> "; print_r($ex->getCode());
// When Facebook returns an error
}catch(Exception $ex){
echo "<pre>"; print_r($ex);
// When validation fails or other local issues
}
}
if ($this->session ){
$this->ci->session->set_userdata( 'fb_token', $this->session->getToken() );
$this->session = new FacebookSession( $this->session->getToken());
}
}
protected function loadState()
{
if ($this->checkForSessionStatus === true
&& session_status() !== PHP_SESSION_ACTIVE) {
throw new FacebookSDKException(
'Session not active, could not load state.', 721
);
}
if (isset($_SESSION[$this->sessionPrefix . 'state'])) {
$this->state = $_SESSION[$this->sessionPrefix . 'state'];
return $this->state;
}
return null;
}
class MyFacebookRedirectLoginHelper extends \Facebook\FacebookRedirectLoginHelper {
public function __construct() {
$this->ci = & get_instance();
}
protected function storeState($state) {
if ($this->ci->session->set_userdata($this->sessionPrefix . 'state', $state)) {
$this->state = $this->ci->session->set_userdata($this->sessionPrefix . 'state', $state);
return $this->state;
}
return NULL;
}
protected function loadState() {
return $this->state = $this->ci->session->userdata($this->sessionPrefix . 'state');
}
}