Intereting Posts
как преобразовать многомерный ассоциативный массив в одномерный массив в php? MySQL: добавить столбец последовательностей на основе другого поля PHP preg_match length 3276 limit Отправка нескольких уведомлений о переносе iphone + APNS + PHP + Tutorial Как преобразовать регулярное выражение PHP в JavaScript regex Невозможно выполнить динамическую вставку родитель-ребенка Как читать изображения из базы данных MySQL с помощью PHP? Любой способ идентифицировать обновление F5 в PHP? ABSPATH или __FILE__? PHP – получить данные из базы данных, сравнить их с переменной и отсортировать по меньшему значению Неустранимая ошибка: нельзя использовать возвращаемое значение функции в контексте записи Как печатать $ с php Запустить команду windows в php отображать различный суффикс для каждого элемента массива в codeigniter php как сохранить <br/> теги при использовании Dom в php для анализа html-документа?

Codeignitor, 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, когда это действительно должно быть истинным sine, fbuser вошел в систему и предоставил perms. Если я обновляюсь, все работает, пользователь регистрируется, если существует, или если новый отправляется на страницу регистрации. Ниже мой код ..

  <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> из  <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(); 

Заранее благодарю вас за любой вклад в эту проблему.

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

Ну, похоже, я понял это. Я сделал это изменение в javascript:

  FB.Event.subscribe('auth.login', function(response) { FB.api('/me', function(response) { window.location.reload(); }); }); 

Я предполагаю, что добавив FB.api ('/ me', function (response) {}); это как-то заставило getUser () вернуть true. Если кто-то еще имеет getUser () return 0, попробуйте это. В любом случае, я надеюсь, что это поможет другим 🙂