Intereting Posts
Условная помощь PHP Реализация очереди для обработки изображений в Laravel – что стоять в очереди, а что нет? Как улучшить производительность PHP? Laravel Eloquent – не запускать запрос отношения, если значение столбца равно NULL или 0 Как сделать отрицательную проверку формы в кодеригере? Mysql – таблица UPDATE SET column = SELECT COUNT (*) FROM (SELECT * FROM table2 WHERE table2.id = table.id)) Невозможно Шаблон маршрута Api на микрофрейме SlimPhp? Разница версий для strtotime («первый день прошлого месяца»)? Утвердить несколько условий в одном тесте или разбить на несколько тестов? Функция «Редактировать» для сообщений на форуме и т. Д. ZF + Doctrine 2: Тяжелые классы моделей или Легкая модель + Сервисный уровень? Как вызвать привязку фильтра в внешнем файле PHP PHP 5.3 не распознает собственный клиент для подключения к MS SQL Почти двойное обнаружение в Solr Есть ли способ уловить ошибки MySQL и базы данных в PHP?

PHP SDK 3.1.1 getUser () иногда возвращает 0

Это сводит меня с ума> = (

$ facebook-> getUser () работает хорошо иногда, но иногда возвращает 0

Вот мой код: require 'fbapi/facebook.php';
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxxxx',
));
$user = $facebook->getUser();
require 'fbapi/facebook.php';
$facebook = new Facebook(array(
'appId' => 'xxx',
'secret' => 'xxxxx',
));
$user = $facebook->getUser();

приложение и секрет являются правильными.

Какая может быть причина, по которой getUser иногда возвращает 0 ???

Скорее всего, что-то в конце Facebook (разработчики прошли через некоторое время назад). Если $user возвращает null или 0, просто перенаправьте их на URL-адрес входа (который вы должны иметь). Вероятность его возвращения 0 снова минимальна (если на их конце нет ошибки или нет кода, кроме того, что вы отправили).

Я столкнулся с подобной проблемой. $ facebook-> getUser () возвращал 0, а иногда возвращал действительный идентификатор пользователя, когда пользователь фактически не вошел в систему, что привело к ошибке Fatal Oauth, когда я пытался совершать вызовы графического api. Я, наконец, решил эту проблему. Я не знаю, правильно ли это, но это работает. Вот код:

 <?php include 'includes/php/facebook.php'; $app_id = "APP_ID"; $app_secret = "SECRET_KEY"; $facebook = new Facebook(array( 'appId' => $app_id, 'secret' => $app_secret, 'cookie' => true )); $user = $facebook->getUser(); if ($user <> '0' && $user <> '') { /*if valid user id ie neither 0 nor blank nor null*/ try { // Proceed knowing you have a logged in user who's authenticated. $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { /*sometimes it shows user id even if user in not logged in and it results in Oauth exception. In this case we will set it back to 0.*/ error_log($e); $user = '0'; } } if ($user <> '0' && $user <> '') { /*So now we will have a valid user id with a valid oauth access token and so the code will work fine.*/ echo "UserId : " . $user; $params = array( 'next' => 'http://www.quickbite.co.in' ); echo "<p><a href='". $facebook->getLogoutUrl($params) . "'>Logout</a>"; $user_profile = $facebook->api('/me'); echo "<p>Name : " . $user_profile['name']; echo "<p>"; print_r($user_profile); } else {/*If user id isn't present just redirect it to login url*/ header("Location:{$facebook->getLoginUrl(array('req_perms' => 'email,offline_access'))}"); } ?> 

Вы просто вводите заголовок php в

 header('P3P: CP="NOI ADM DEV COM NAV OUR STP"'); 

Я нашел простое решение этой проблемы .. это происходит, когда класс facebook не может установить или добавить переменную сеанса на вашем сервере.

В моем коде я использовал session_write_close (), прежде чем включать классы facebook, из-за которых я получил эту ошибку. «Ток состояния CSRF не соответствует одному предоставленному».

Затем я переместил session_write_close () в конце кода и, наконец, сработал. 🙂

Поэтому я боролся с той же проблемой, getUser() всегда возвращался 0. Не имел никакого смысла. Журналы ошибок NginX показывали следующую ошибку: токен состояния CSRF не соответствует одному предоставленному. Затем я начал отлаживать sdk и сузил его до getAccessTokenFromCode() не смог получить правильное accesstoken с серверов Facebook, что-то связанное с сертификатами SSL.

Решение на приведенной ниже ссылке решило проблему для меня.

https://github.com/facebook/php-sdk/issues/272

Также вам может потребоваться скопировать файл fb_ca_chain_bundle.crt в комплекте с sdk в папку, в которой находится ваш файл класса facebook. я сделал.

Я надеюсь в этом есть смысл.