2012-10-24 2 views
0

Мне очень сложно получить PHP PHP SDK для работы с плагином Wordpress, в котором я пытаюсь восстановить поток входа. Проблема, которую я имею что GetUser() всегда возвращает 0, хотя, безусловно, есть пользователь вошел в принципе, мой код работает следующим образом:.Неисправность получения идентификатора пользователя с помощью getUser в PHP SDK

  1. У меня есть страница опций (в пределах WordPress), что при загрузке создает экземпляр класса-оболочки ROR класса PHP SDK Facebook, как это:

    $facebook = new FacebookAPI; 
    

    конструктор для этой оболочки создает экземпляр класса PHP SDK Facebook и сохраняет его, а также установка несколько переменные класса и выполнить некоторую работу для управления сеансами, сохраненными в плагине.

  2. Затем на странице параметров есть кнопка, которая является ссылкой на login_url, сгенерированную объектом Facebook, то есть getLoginUrl(). Логин Url называется так, используя класс-оболочки:

    // Set Login Url 
    $params = array(
        'scope' => 'user_photos,user_photo_video_tags', 
        'redirect_uri' => FB_REDIRECT_URI, 
        'display' => 'page' 
    ); 
    $loginURL = $facebook->get_login_url($params); 
    
  3. redirect_uri здесь является страница вариантов плагина в WordPress и при перезагрузке страницы есть код, который проверяет, является ли процесс Логина имеет завершено все в порядке. Это делается, если посмотреть, содержит ли url переменную 'code', т. Е. Если $ _REQUEST ['code'] установлен. (Это то, что делает FB, когда он успешно завершает процесс регистрации/разрешений

Проблема:. Если «код» устанавливается в объекте запроса, я думаю, что я должен тогда быть в состоянии назвать GetUser() класса facebook SDk и получить идентификатор пользователя. здесь я столкнулся с проблемой. GetUser() всегда возвращает 0, и я не мог понять, почему.

Одно Я заметил, однако, что если я делаю var_dump ($ _ SESSION), массив пуст. И в журнале ошибок PHP у меня есть следующие предупреждения PHP:

PHP Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /****/****/Sites/ld-full/wp-admin/menu-header.php:92) in /****/****/Sites/ld-full/wp-content/plugins/fotobook/facebook-platform/facebook.php on line 49 
PHP Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /****/****/Sites/ld-full/wp-admin/menu-header.php:92) in /****/****/Sites/ld-full/wp-content/plugins/fotobook/facebook-platform/facebook.php on line 49 

Line 92 в меню-header.php, однако, заключается в следующем:

echo "\n\t<div class='wp-menu-image'><a href='{$submenu_items[0][2]}' aria-label='$aria_label'>$img</a></div>$arrow<a href='{$submenu_items[0][2]}'$class $aria_attributes>$title</a>"; 

Я не вижу здесь ничего, что бы писать заголовки. Поэтому я нахожусь в этой точке довольно тупой.

Есть ли у кого-нибудь идеи о том, что может происходить здесь? Любая помощь будет абсолютно фантастической.

ответ

1

Проблема: Если «код» установлен в объекте запроса, я думаю, что тогда я должен был бы вызвать getUser() в классе facebook sdk и получить идентификатор пользователя.

Nope. Цель параметра кода должна быть обменена на токен доступа.

есть код, который проверяет, завершен ли процесс входа в систему. Это делается, если посмотреть, содержит ли url переменную 'code', т. Е. Если $ _REQUEST ['code'] установлен. (Это то, что делает FB, когда он успешно завершает процесс входа/разрешения.

Получение параметра кода делает не означает, что авторизация уже закончена - шаг уже упоминалось выше должен осуществляться первым.

И в журнале PHP ошибки, у меня есть следующие PHP Предупреждения:

PHP Warning: session_start(): Не удается отправить куки сессии - заголовки уже посланные [...]

Ppppleeeaaaaseee исследовать это сообщение об ошибке самостоятельно - это обсуждалось и объяснялось в Интернете чаще, чем люди, вероятно, искали в Пэрис Хилтон в явном контексте ...

+0

Вы ошиблись " Ким Кардашян". – maiorano84

+0

@Cbroe, посмотрев код класса PHP SDK Facebook, мне кажется, что функция getUser() должна инициировать процесс обмена $ code для нового токена доступа. Ваш вопрос о том, когда нужно сказать, что процесс авторизации завершен, - это семантический отличительный знак: я имею в виду, что процесс завершился на стороне сервера Facebook. Конечно, этот процесс необходимо завершить на стороне сервера. Наконец, об ошибке, я не уверен, что нужно исследовать: сообщение ясно. Объект $ _SESSION не выводится. Я представил эту информацию, потому что это связано. – fraxture

+0

Вы не можете начать новый сеанс после того, как вы уже отправили вывод в браузер (если не включена буферизация вывода). SDK в Facebook пытается начать новый сеанс, но не может в тех случаях, когда вы его вызываете, так что следите за тем, чтобы вы его инициализировали _before_, вы генерируете какой-либо вывод. – CBroe

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

  • Нет связанных вопросов^_^