Facebook Oauth Logout

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

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

Шаги, которые я принимаю для авторизации:

  1. Вызовите [LINK: graph.facebook.com/oauth/authorize?client_id …]

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

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

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

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

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

Я видел предложения о том, что:

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

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

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

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

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

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

У меня та же проблема. Я также использую oauth (я использую RubyOnRails), но для выхода из системы я делаю это с помощью JavaScript, используя следующую ссылку:

Logout 

Это сначала вызывает функцию onclick и выполняет выход на facebook, а затем вызывается функция normal https://stackoverflow.com/logout моего сайта.

Хотя я бы предпочел и серверное решение, но, по крайней мере, он делает то, что я хочу, он выводит меня на оба сайта.

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

Это работает на данный момент – и задокументировано на сайте facebook @ http://developers.facebook.com/docs/authentication/ . Не уверен, как недавно он был добавлен в документацию, довольно уверен, что этого не было, когда я проверил февраль 2012 г.

Вы можете программно зарегистрировать пользователя из нашего Facebook, перенаправив пользователя на

https://www.facebook.comhttps://stackoverflow.com/logout.php?next=YOUR_REDIRECT_URL&access_token=USER_ACCESS_TOKEN

Это решение больше не работает с текущим API-интерфейсом FaceBook (кажется, что это было непреднамеренно для начала)

 http://m.facebook.comhttps://stackoverflow.com/logout.php?confirm=1&next=http://yoursitename.com; 

Попробуйте указать эту ссылку на ссылку или кнопку, где «yoursitename.com» – это то, где вы хотите перенаправить обратно после того, как вы можете указать домашнюю страницу ur.

Оно работает..

Я могу программно регистрировать пользователя из Facebook, перенаправляя пользователя на

https://www.facebook.comhttps://stackoverflow.com/logout.php?next=YOUR_REDIRECT_URL&access_token=USER_ACCESS_TOKEN

URL, указанный в следующем параметре, должен быть URL с тем же базовым доменом, что и ваше приложение, как определено в настройках вашего приложения.

Подробнее: https://developers.facebook.com/docs/authentication

Вы можете сделать это с помощью access_token :

 $access_array = split("\|", $access_token); $session_key = $access_array[1]; 

Вы можете использовать этот $session key в PHP SDK для создания функционального URL выхода.

 $logoutUrl = $facebook->getLogoutUrl(array('next' => $logoutUrl, 'session_key' => $session_key)); 

Это завершает сеанс facebook браузера.

С PHP я делаю:

 logout. if(isset($_GET['action']) && $_GET['action'] === 'logout'){ $facebook->destroySession(); header(WHERE YOU WANT TO REDIRECT TO); exit(); } 

Работает, и приятно и просто, я просто пытаюсь найти графическую кнопку выхода из системы!

Вот альтернатива принятому ответу, который работает в текущей (2.12) версии API.

 Logout  

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

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

Для разработчиков Python, которые хотят вывести пользователя прямо из бэкэнд

На данный момент я пишу это, трюк с m.facebook.com больше не работает (по крайней мере для меня), и пользователь перенаправляется на страницу входа в мобильную FB, что явно не подходит для UX.

К счастью, FB PHP SDK имеет полудокументированное решение (в случае, если ссылка не приводит к функции getLogoutUrl() , просто найдите ее на этой странице). Об этом также упоминается, по крайней мере, еще одна проблема StackOverflow: Facebook php SDK getLogoutUrl () .

BTW Я только что заметил, что Зак Гринберг понял это в этом вопросе, но я добавляю свой ответ в качестве резюме для разработчиков Python.

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

 FB.logout(function(response) {}); 

@ Кристоф: просто добавляя сообщение. Я не думаю, что это правильный путь. Чтобы выйти из обоих мест одновременно ( Logout ).

 Just add id to the anchor tag . Logout $(document).ready(function(){ $('#fbLogOut').click(function(e){ e.preventDefault(); FB.logout(function(response) { // user is now logged out var url = $(this).attr('href'); window.location= url; }); });}); 

Update: это решение работает, и только вызов «FB.logout ()» не работает, потому что браузер хочет, чтобы пользовательское взаимодействие действительно вызывало эту функцию, так что она знает – это пользователь, а не сценарий.

 Logout 

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

  • Почему заканчиваются токены доступа?
  • OAuth с проверкой в ​​.NET.
  • Как OAuth 2 отличается от OAuth 1?
  • Настройка заголовка авторизации HttpClient
  • SSO с CAS или OAuth?
  • Есть ли способ получить идентификатор электронной почты пользователя после проверки его / ее идентификатора Twitter с помощью OAuth?
  • Получить информацию о пользователе через API Google
  • Twitter oAuth callbackUrl - разработка локального хоста
  • Настройка конечной точки сервера авторизации
  • Как использовать API входа в Google с помощью Cordova / Phonegap
  • Facebook OAuth «Домен этого URL-адреса не входит в домен приложения»
  • Interesting Posts

    Как сделать разбиение на страницы в ASP.NET MVC?

    Как я могу ввести символ U + 200B?

    sizeof union в C / C ++

    Установите программный код Android IP, DNS, GATEWAY

    Как вызвать программу для запуска с правами администратора, но под тем же пользователем (Командная строка Windows)

    дважды загружается в Google Chrome

    Как глубоко наблюдать массив в angularjs?

    Использование StringWriter для сериализации XML

    Сравнение строк с ==, которые объявлены окончательными в Java

    Разделите пробелы и новые строки из XML в Java

    Добавление записей в раздел реестра с использованием командного файла

    Стандартное значение переменной PATH Windows 10

    Получить начальную и конечную дату недели с учетом текущей даты и начала недели

    Android – Съемка фотографий и сохранение их с помощью специального имени в пользовательское место назначения через Intent

    Java и GUI – Где ActionListeners принадлежат в соответствии с шаблоном MVC?

    Давайте будем гением компьютера.