Codeigniter, Facebook javascript SDK, PHP SDK Перенаправление после входа в facebook не getUser () до обновления

Процесс выглядит следующим образом.

1. User clicks Facebook Login button
2. User signs in and grants perms
3. Facebook redirects uses FB.Event.subscribe auth.login to redirect my login controller
4. My login controller loads the fbconnect module and chains the method Connect()
5. Connect() Checks if there is a facebook user using getUser() and if true checks if they are an existing user to log them in or returns false if no facebook user was found.

Все работает, за исключением того, что единственная проблема заключается в перенаправлении на страницу входа в систему. Connect возвращает False, хотя на самом деле это должно быть верно, поскольку fbuser вошел в систему и предоставил завивку. Если я обновляюсь, но все работает, пользователь входит в систему, если он существует, или если новый отправляется на страницу регистрации. Ниже мой код ..

      <div id="fb-root"></div>
    <script>
      //initializing API
      window.fbAsyncInit = function() {
        FB.init({appId: '(My app id)', status: true, cookie: true,
                 xfbml: true, // channel.html file
                 oauth  : true
                 });
                 FB.Event.subscribe('auth.login', function(response) {
                 window.location='http://www.(Mysite).com/login';
                 });
                 FB.Event.subscribe('auth.logout', function(response) {
                 window.location='http://www.(Mysite).com/logout';
                 });
                 };
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>

Fbconnect.php

class Fbconnect extends MX_Controller {
public $fb_user = null;
public $fb_user_id = null;

// Initilize Fabebook
public function __construct() 
{   
    parent::__construct();
    $this->config->load("facebook");
    require 'facebook.php';

    $this->facebook = new Facebook(array(
      'appId' => $this->config->item('appId'),
      'secret' => $this->config->item('Secret')
    ));


    // Get user from FB
    $this->fb_user_id = $this->facebook->getUser();

    if ($this->fb_user_id):
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $this->fb_user = (object)$this->facebook->api('/me');
      } catch (FacebookApiException $e) {
        error_log($e);
        $this->fb_user = null;
      }
    endif;

}


public function connect(){

    // Check for FB object
    if($this->fb_user):
        // FB Object found
            // Check if user exists
            $this->load->model('facebook/m_facebook');
            $user = $this->m_facebook->getUser($this->fb_user->id);

            // If we find a user and fb connect is true
            if($user):
                // user found log them in
                if($this->ion_auth->login($user->username, $user->password, true, true)):
                   redirect('', 'refresh');
                endif;
            else:
            // There is a fb object & the user is not logged in & doesnt exist in db yet must be new 
                redirect('signup/facebook', 'refresh');
            endif;
    else: 
        // No FB user or user not logged in                                  
        return false;
    endif;    
}

Код авторизации / входа в систему (только та часть, которая связана с facebook)

 $this->load->module('facebook/fbconnect')->connect(); 
6
задан Cœur 11 July 2018 в 01:36
поделиться