Кнопка входа в Facebook с oauth 2 не вызывает auth.login

Наш сайт Asp.net использовал кнопку входа в facebook (w / javascript sdk) для обработки процесса входа в систему, и теперь, когда Oauth является обязательным (по состоянию на 15 декабря 2011 г. (вчера)) - он не работает. Я внес несколько очевидных изменений, которые были упомянуты в блоге о миграции fb oauth, но все же Я получаю ошибки. В частности, когда параметр FB.init () устанавливает status = false, событие auth.login никогда не запускается (что является проблемой, потому что я использую обратный вызов для этого события, чтобы вызвать другую страницу, которая выполняет некоторые запросы открытого графа на стороне сервера. на основе токена авторизации в результирующем файле cookie). Если я установил status = true, то событие запускается, но cookie не установлен, и поэтому я не могу выполнять запросы открытого графа на стороне сервера.

Вот мой код javascript (слегка отредактированный ...):

  window.fbAsyncInit = function () {
        FB.init({
            appId: GetFacebookAppId(),
            status: true, 
            cookie: true,
            xfbml: true,
            oauth: true
        });

        FB.Event.subscribe('auth.login', function (response) {
            if (response.authResponse && response.authResponse.accessToken)
                FacebookLoginRedirect(); 
        });
   }

Любые идеи?

Спасибо!


person skeej    schedule 16.12.2011    source источник


Ответы (3)


Попробуйте FB.getLoginStatus() вместо if (response.authResponse && response.authResponse.accessToken)

См. Подробный пример здесь, в документации:]

person borisdiakur    schedule 16.12.2011
comment
это работает, если fb.init {..., status: true, ...}, но я хочу установить status = false для работы с моим существующим кодом. когда status = false, событие auth.login не запускается. это большая проблема. - person skeej; 17.12.2011

Надеюсь, кто-то сочтет это полезным - мне удалось прослушать другое событие: auth.statusChange, проверить ответ и продолжить. Одна вещь заключалась в том, что мне пришлось отказаться от подписки на это событие после того, как я успешно вошел в систему, но тогда все, казалось, работало нормально.

person skeej    schedule 19.12.2011

слушать auth.statusChange:

FB.Event.subscribe('auth.statusChange', handleStatusChange);
person Miguel Alejandro Fuentes Lopez    schedule 19.12.2011