Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 使用PHP和JS facebook SDK实现Oauth_Codeigniter_Oauth_Facebook Javascript Sdk_Facebook Php Sdk - Fatal编程技术网

Codeigniter 使用PHP和JS facebook SDK实现Oauth

Codeigniter 使用PHP和JS facebook SDK实现Oauth,codeigniter,oauth,facebook-javascript-sdk,facebook-php-sdk,Codeigniter,Oauth,Facebook Javascript Sdk,Facebook Php Sdk,各位发展商, 我正在使用codeigniter(电子商务类平台)实现facebook登录到我的Web应用程序 所以,我在我的网站上有很多过滤器,基于它们,我试图获取数据并请求服务。所以用户必须登录才能请求服务,所以最后我强迫用户继续登录(比如买东西) 问题来了,我使用Javascript SDK实现了Facebook登录,并尝试获取accesstoken。并在codeigniter中创建了一个FACEBOOK库,该库使用。现在,我应该在所有会话中更新用户详细信息,并将用户名动态附加到codeig

各位发展商,

我正在使用codeigniter(电子商务类平台)实现facebook登录到我的Web应用程序

所以,我在我的网站上有很多过滤器,基于它们,我试图获取数据并请求服务。所以用户必须登录才能请求服务,所以最后我强迫用户继续登录(比如买东西)

问题来了,我使用Javascript SDK实现了Facebook登录,并尝试获取accesstoken。并在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();
  }

}
我的标题视图:

<?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'); 
    } 
    });
    
    $.ajax({
    url:“”,
    成功:函数(数据){
    var data=$.parseJSON(数据);
    $('.user_name').html(data.name);
    $('#userName').css('display','block'))
    $('#login').css('display','none');
    $('#socialwin').modal('hide');
    } 
    });
    

    任何关于解决此问题的体系结构的参考或建议。

    这将解决您的问题

    ajax调用

    $.ajax({ 
    url:"<?php echo base_url('redirectoauth');?>", 
        success:function(data){ 
        var data=$.parseJSON(data); 
        $('.user_name').html(data.name); 
        $('#logined').css('display','block') 
        $('#sociallogined').css('display','none'); 
        $('#socialLogin').modal('hide'); 
    } 
    });
    
    $.ajax({
    url:“”,
    成功:函数(数据){
    var data=$.parseJSON(数据);
    $('.user_name').html(data.name);
    $(“#登录”).css('显示','块')
    $('#sociallinked').css('display','none');
    $('#socialwin').modal('hide');
    } 
    });
    
    看法

    >
    

    您无法将我们网站的所有会话设置为facebook登录吗?@user1048123无法获取您实际获得的问题?你不能在facebook登录后设置会话吗?你知道我正在从facebook库向控制器获取数据,但我无法在当前视图中更新它。我可以开始上课了。因为我使用的是JS SDK,所以这里的视图没有重定向。好的,所以您可以使用ajax在控制器中设置会话并向视图发送响应,对吗?但在视图中,您无法在响应后看到会话更改,对吗?这解决了您的问题吗?
    $.ajax({ 
    url:"<?php echo base_url('redirectoauth');?>", 
        success:function(data){ 
        var data=$.parseJSON(data); 
        $('.user_name').html(data.name); 
        $('#logined').css('display','block') 
        $('#sociallogined').css('display','none'); 
        $('#socialLogin').modal('hide'); 
    } 
    });
    
    <ul id="logined" <?php echo $this->session->userdata('user_name') ? 'style="display:none"' :''; ?>>
        <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>
    </ul>
    <ul id="sociallogined">
        <li id="login"><a href="#socialLogin" data-toggle="modal">Login</a></li>
    </ul>