Facebook Oauth Выйти - PullRequest
       50

Facebook Oauth Выйти

68 голосов
/ 04 мая 2010

У меня есть приложение, которое интегрируется с Facebook, используя Oauth 2.

Я могу авторизоваться с помощью FB и отлично запрашивать их API REST и Graph, но при авторизации активный сеанс браузера создается с помощью FB. Затем я могу просто выйти из приложения, но сеанс с FB сохраняется, поэтому, если кто-либо еще использует браузер, он увидит учетную запись FB предыдущих пользователей (если только предыдущий пользователь также не вышел из FB вручную).

Шаги для авторизации:

  1. Позвоните [ССЫЛКА: graph.facebook.com/oauth/authorize?client_id...]

Этот шаг открывает окно входа / подключения Facebook, если в браузере пользователя еще нет активного сеанса FB. После входа в Facebook они перенаправляют на мой сайт код, который я могу обменять на токен oauth.

  1. Позвоните [LINK: graph.facebook.com/oauth/access_token?client_id ..] с кодом из (1)

Теперь у меня есть Oauth-токен, и браузер пользователя вошел на мой сайт и в FB.

  1. Я вызываю кучу API для выполнения каких-либо задач: т. Е. [LINK: graph.facebook.com/me?access_token=..]

Допустим, мой пользователь хочет выйти из моего сайта. Положения и условия FB требуют, чтобы я выполнил Single Sign Off, поэтому, когда пользователь выходит из моего сайта, он также выходит из Facebook. Есть аргументы, что это немного глупо, но я с радостью согласен, если есть какой-то способ добиться этого.

Я видел предложения, которые:

A. Я использую Javascript API для выхода из системы: FB.Connect.logout (). Ну, я пытался использовать это, но это не сработало, и я не уверен, как именно это могло, так как я не использую Javascript API на моем сайте. Сеанс не поддерживается и не создается API Javascript, поэтому я не уверен, как он должен истечь.

B. Используйте [ССЫЛКА: facebook.com/logout.php]. Это было предложено администратором на форумах Facebook некоторое время назад. Приведенный пример относится к старому способу получения сессий FB (не oauth), поэтому я не думаю, что смогу применить его в моем случае.

C. Используйте старый API REST expireSession или revokeAuthorization. Я попробовал оба из них, и хотя у них истекает токен Oauth, они не делают недействительным сеанс, который в настоящее время использует браузер, поэтому он не имеет никакого эффекта, пользователь не вышел из Facebook.

Я немного не в курсе, документация в Фейсбуке неоднозначна, неоднозначна и довольно скудна. Поддержка на форумах не существует, в настоящее время я даже не могу войти на форум Facebook, и, кроме этого, их собственная интеграция с FB Connect даже не работает на самом форуме. Не внушает особого доверия.

Та за любую помощь, которую вы можете предложить. Derek

пс. Пришлось изменить HTTPS на LINK, недостаточно кармы для публикации ссылок, что, вероятно, достаточно справедливо.

Ответы [ 13 ]

0 голосов
/ 26 ноября 2010

Примечание к ответу Кристофа: Выход из Facebook Facebook Функция выхода из системы требует указания функции обратного вызова и завершится ошибкой это, по крайней мере, на Firefox. Хром работает без обратного вызова.

FB.logout(function(response) {});
0 голосов
/ 14 сентября 2010

мобильное решение, предлагаемое Sumit, отлично работает для AS3 Air:

html.location = "http://m.facebook.com/logout.php?confirm=1&next=http://yoursitename.com"

0 голосов
/ 17 июля 2010

это просто введите: $ facebook-> setSession (null); для выхода из системы

...