PHP SDK 3.1.1 getUser () иногда возвращает 0 - PullRequest
9 голосов
/ 29 августа 2011

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

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

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

appId и secret являются правильными.

По какой причине getUser иногда возвращает 0 ???

Ответы [ 5 ]

1 голос
/ 09 июля 2012

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

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');
1 голос
/ 11 ноября 2011

Я столкнулся с подобной проблемой.$ facebook-> getUser () возвращал 0 и иногда возвращал действительный идентификатор пользователя, когда пользователь фактически не вошел в систему, что приводило к ошибке Fatal Oauth, когда я пытался сделать вызовы Graph 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 i.e. 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'))}");
}

?>
1 голос
/ 29 августа 2011

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

0 голосов
/ 13 января 2012

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

В своем коде я использовал session_write_close () перед включением классов Facebookиз-за чего я получил эту ошибку .. "Маркер состояния CSRF не соответствует предоставленному."*

0 голосов
/ 30 сентября 2011

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

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

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

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

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...