TL; DR Facebook javascript SDK не может определить точный статус входа пользователя, который непосредственно вышел из системы с facebook.com под ним.
Я разрабатываю приложение Facebook, используя javascript SDK для аутентификации. Я заметил, что когда пользователь выходит из Facebook напрямую (на facebook.com), SDK не может понять состояние входа пользователя на странице приложения. Я свел это к следующему простому тесту.
Авторизуйтесь на facebook.com в одной вкладке. На другой вкладке отобразите страницу приложения ниже (заменив MY_APP_ID соответствующим образом). Если вы вошли в facebook как пользователь, который никогда не давал разрешения этому приложению, нажмите «Войти» и предоставьте их. В любом случае вы должны увидеть несколько событий, указывающих на то, что вы вошли в систему.
Теперь, вернувшись на вкладку facebook.com, выйдите из facebook. Перейдите на вкладку приложения, нажмите все кнопки (кроме «Войти») и посмотрите вывод консоли браузера.
Когда вызывается FB.logout
, ничего не происходит. Обратный вызов никогда не вызывается. В Chrome выдается следующая ошибка: «Небезопасная попытка JavaScript получить доступ к фрейму с URL-адресом http://my_app.com из фрейма с URL-адресом http://www.facebook.com/ . Домены, протоколы и порты должны совпадать. "
Когда FB.getLoginStatus
вызывается, в ответе говорится «подключен» и есть объект authResponse. Однако это бесполезно, потому что теперь это неверно. Если вместо этого для параметра force передается значение true, то ничего не происходит (обратный вызов никогда не вызывается).
Когда вызывается FB.getAuthResponse
, ничего не происходит (обратный вызов никогда не вызывается).
Ни одно из соответствующих событий не запускается во время любого из этих действий (то есть после выхода из facebook).
Проблема в том, что в таком случае, похоже, нет возможности законно определить статус входа пользователя из SDK. Или делаю глупость, хоть и свел к минимуму.
Моя конечная цель состоит в том, что я хочу иметь возможность делать что-то в этом случае, если пользователь нажимает мою кнопку выхода после того, как уже вышел из facebook. Но SDK не дает реальных средств для достижения этой цели.
Есть идеи или мысли? Кто-нибудь еще испытал это и нашел обходной путь? Спасибо!
Простая страница приложения:
Login