У меня есть приложение, которое интегрируется с Facebook с помощью Oauth 2.
Я могу авторизовать с FB и запросить их REST и графические API отлично, но когда я разрешаю активный сеанс браузера, создается с помощью FB. Я могу с успехом выйти из моего приложения, но сеанс с FB сохраняется, поэтому, если кто-либо еще использует браузер, он увидит предыдущую учетную запись FB (если предыдущий пользователь не выйдет вручную из FB).
Для авторизации выполняются следующие шаги:
- Вызов [LINK: graph.facebook.com/oauth/authorize?client_id...]
Этот шаг открывает окно входа/подключения Facebook, если пользовательский браузер еще не имеет активного сеанса FB. Как только они войдут в facebook, они перенаправляются на мой сайт с кодом, который я могу обменять на токен oauth.
- Вызовите [LINK: graph.facebook.com/oauth/access_token?client_id..] с кодом из (1)
Теперь у меня есть Oauth Token, и браузер пользователя зарегистрирован на моем сайте и в FB.
- Я называю кучу API-интерфейсов для работы: i. [LINK: graph.facebook.com/me?access_token =..]
Допустим, мой пользователь хочет выйти из моего сайта. Условия FB требуют, чтобы я выполнял Single Sign Off, поэтому, когда пользователь выходит из моего сайта, они также выходят из Facebook. Есть аргументы, что это немного глупо, но я рад соблюдать, если есть какой-либо способ добиться этого.
Я видел предложения, что:
а. Я использую Javascript API для выхода из системы: FB.Connect.logout(). Хорошо, я попытался использовать это, но это не сработало, и я точно не знаю, как это можно сделать, поскольку я не использую Javascript API каким-либо образом на своем сайте. Сессия не поддерживается или не создается Javascript API, поэтому я не уверен, как она должна истекать. Либо.
В. Используйте [LINK: facebook.com/logout.php]. Это было предложено администратором на форумах Facebook некоторое время назад. Приведенный пример относится к старому способу получения сессий FB (non-oauth), поэтому я не думаю, что могу применить его в моем случае.
С. Используйте старый REST api expireSession или revokeAuthorization. Я попробовал оба из них, и пока они истекают токен Oauth, они не делают недействительным сеанс, который браузер использует в настоящее время, поэтому он не действует, пользователь не вышел из Facebook.
Я действительно немного расстроен, документация в Facebook неоднозначна, неоднозначна и довольно бедна. Поддержка на форумах не существует, на данный момент я не могу даже войти на форум facebook, и кроме того, их собственная интеграция FB Connect даже не работает на самом форуме. Не внушает доверия.
Та для любой помощи, которую вы можете предложить. Дерек
пс. Если бы изменить HTTPS на LINK, недостаточно кармы для публикации ссылок, которые, вероятно, достаточно справедливы.