PHP SDK Facebook выдает ошибку OAuth только некоторым пользователям - PullRequest
2 голосов
/ 20 января 2011

Я настроил Facebook Connect, чтобы пользователи могли регистрироваться на моем сайте одним щелчком мыши, и он работает без проблем для большинства пользователей, но я получил несколько писем от пользователей, которые получают следующую ошибку:

Неустранимая ошибка PHP: Uncaught OAuthException: активный токен доступа должен использоваться для запроса информации о текущем пользователе. \ N брошенный в /home/example/public_html/facebook.php в строке 453

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

Код кнопки «Мой Facebook Connect»:

<fb:login-button size="large" length="long" v="2" perms="email,user_birthday" onlogin="fb_login()"></fb:login-button>
<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function() {
        FB.init({appId: '.....', status: true, cookie: true, xfbml: true});
    };
    (function() {
        var e = document.createElement('script');
        e.type = 'text/javascript';
        e.src = document.location.protocol +
        '//static.ak.fbcdn.net/connect/en_US/core.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
    }());

    function fb_login() {
        FB.getLoginStatus(function(response) {
            if (response.session) {
                window.location = 'http://example.com/register_fb.php';
            }
        });
    }
</script>

Мой код PHP:

require './facebook.php';

$facebook = new Facebook(array(
  'appId'  => '....',
  'secret' => '....',
  'cookie' => true,
));

$session = $facebook->getSession();
$user = $facebook->api('/me');

//// register the user or log them in...

1 Ответ

1 голос
/ 19 июля 2011

Сужение используемых браузеров поможет отладить это.

В отсутствие этого и основываясь на вашем коде, я могу вспомнить одну вещь, которая может вызвать эту проблему; неспособность Javascript SDK установить cookie с помощью кнопки входа в систему.

Это может происходить в некоторых браузерах в зависимости от кадрирования и т. Д.

Обрабатывая эту проблему, вы можете определить, является ли значение facebook-> getSession () пустым, а затем перенаправить на $ facebook-> getLoginUrl () (что, впрочем, является хорошей идеей).

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