2012-04-18 3 views
0

Во-первых, я скачал Facebook PHP SDK и применил первый ответ здесь: Using Facebook PHP-SDK 3.x to register/login user with Codeigniter 2.1.0PHP SDK + код воспламенитель

В мой контроллер:

  1. Я пытаюсь заставить пользователя: $ this- -> facebook-> GetUser(); .. Если это 0, я вызываю другую функцию $ this-> facebook_login(); - иначе я сохраню некоторые данные в базе данных, например, имя.

  2. В facebook_login() генерируется адрес авторизации: $ this-> facebook-> getLoginUrl() - и передается в представление, которое отображает его.

  3. До сих пор я нажимаю на URL-адрес входа и перенаправляет на Facebook, запрашивает одобрение и аутентификацию и т. Д. - затем перенаправляет меня обратно на страницу в «1».

  4. Проблема в том, что getUser возвращает ноль. Я напечатал переменную SESSION $ и обнаружил, что установлен только fb {appId} _state.

Я попытался создать другой PHP файл (login.php), который не в папке CI со следующим кодом:

<?php 

define('BASEPATH', ''); 
require_once('application/libraries/facebook.php'); 

$fb = new Facebook(array('appId'=>'...', 'secret'=>'...')); 

$user = $fb->getUser(); 

if($user == 0){ 
    $login = $fb->getLoginUrl(); 
    echo '<a href="'.$login.'">Login</a>'; 
} else { 
    print_r($fb->api('/me')); 
} 

?> 

Если я посещаю login.php затем посетить страницу в «1 "выше - getUser возвращает идентификатор пользователя, а $ _SESSION содержит данные пользователя. Поэтому я думаю, проблема связана с CodeIgniter, но я не уверен, как ее решить.

Я искал и попробовал несколько решений, но это лучшее, что я мог сделать. Если возможно, я не хочу использовать JS SDK.

Спасибо

+0

В конструкторе, найденном в ссылке в начале вопроса, добавьте это перед загрузкой библиотеки facebook: parse_str ($ _SERVER ['QUERY_STRING'], $ _REQUEST); – GalalAly

+0

Является ли переменная 'cookie_domain' правильно настроена для вашего домена в application/config/config.php? –

+0

Да. Я понял решение и разместил его как комментарий. Спасибо :) – GalalAly

ответ

0

Я нашел решение и написал сообщение в блоге об этом here.

+0

Не стесняйтесь отмечать это как «принятый ответ». [Подробнее здесь] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) при необходимости. –

+0

@GalalAly Пожалуйста, не связывайтесь с внешним сайтом, так как нет гарантии, что сайт будет существовать в будущем. Вместо этого разместите свое решение здесь. – Sampson

Смежные вопросы