Facebook выход из системы OAuth

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

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

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

  1. Вызов [ССЫЛКА: graph.facebook.com/oauth/authorize?client_id...]

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

  1. Вызов [ССЫЛКА: graph.facebook.com/oauth/access_token?client_id..] с кодом от (1)

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

  1. Я называю набор API, чтобы сделать материал: т.е. [ССЫЛКА: graph.facebook.com/me?access_token=..]

Позволяет говорят, что мой пользователь хочет выйти из моего сайта. Положения и условия FB требуют, чтобы я выполнил Единственный Знак прочь, поэтому когда пользователь выходит из моего сайта, они также вышли из Facebook. Существуют аргументы, что это немного ненормально, но я рад соответствовать, если существует какой-либо способ фактического достижения этого.

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

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

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

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

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

Ta для любой справки можно предложить. Derek

PS. Должен был изменить HTTPS для СОЕДИНЕНИЯ, недостаточно кармы для регистрации ссылок, который, вероятно, достаточно справедлив.

69
задан Derek Troy-West 4 May 2010 в 10:22
поделиться

4 ответа

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

<a href="/logout" onclick="FB.logout();">Logout</a> 

Сначала вызывается функция onclick и выполняется выход из facebook, а также тогда вызывается обычная функция / logout моего сайта.

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

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

41
ответ дан 24 November 2019 в 13:54
поделиться

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

$access_array = split("\|", $access_token);

$session_key = $access_array[1];

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

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

На этом завершается сеанс браузера в facebook.

5
ответ дан 24 November 2019 в 13:54
поделиться

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

-8
ответ дан 24 November 2019 в 13:54
поделиться

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

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

Попробуйте дать эту ссылку при выходе из системы ссылка или кнопка, где "yoursitename.com" Это то место, где вы хотите перенаправить обратно после выхода, может быть ваша домашняя страница.

Работает ..

18
ответ дан 24 November 2019 в 13:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: