Мне очень сложно получить PHP PHP SDK для работы с плагином Wordpress, в котором я пытаюсь восстановить поток входа. Проблема, которую я имею что GetUser() всегда возвращает 0, хотя, безусловно, есть пользователь вошел в принципе, мой код работает следующим образом:.Неисправность получения идентификатора пользователя с помощью getUser в PHP SDK
У меня есть страница опций (в пределах WordPress), что при загрузке создает экземпляр класса-оболочки ROR класса PHP SDK Facebook, как это:
$facebook = new FacebookAPI;
конструктор для этой оболочки создает экземпляр класса PHP SDK Facebook и сохраняет его, а также установка несколько переменные класса и выполнить некоторую работу для управления сеансами, сохраненными в плагине.
Затем на странице параметров есть кнопка, которая является ссылкой на 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);
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>";
Я не вижу здесь ничего, что бы писать заголовки. Поэтому я нахожусь в этой точке довольно тупой.
Есть ли у кого-нибудь идеи о том, что может происходить здесь? Любая помощь будет абсолютно фантастической.
Вы ошиблись " Ким Кардашян". – maiorano84
@Cbroe, посмотрев код класса PHP SDK Facebook, мне кажется, что функция getUser() должна инициировать процесс обмена $ code для нового токена доступа. Ваш вопрос о том, когда нужно сказать, что процесс авторизации завершен, - это семантический отличительный знак: я имею в виду, что процесс завершился на стороне сервера Facebook. Конечно, этот процесс необходимо завершить на стороне сервера. Наконец, об ошибке, я не уверен, что нужно исследовать: сообщение ясно. Объект $ _SESSION не выводится. Я представил эту информацию, потому что это связано. – fraxture
Вы не можете начать новый сеанс после того, как вы уже отправили вывод в браузер (если не включена буферизация вывода). SDK в Facebook пытается начать новый сеанс, но не может в тех случаях, когда вы его вызываете, так что следите за тем, чтобы вы его инициализировали _before_, вы генерируете какой-либо вывод. – CBroe