API Twitter - выход - PullRequest
       26

API Twitter - выход

28 голосов
/ 25 декабря 2009

Я использую OAuth в своем веб-приложении, и пользователи могут войти через твиттер.

Я хочу добавить кнопку «переключить учетную запись в твиттере», которая фактически очищает сеанс, а затем открывает authorize_url.

Поскольку очистка сеанса в моем веб-приложении не выходит из твиттера, authorize_url автоматически аутентифицирует текущего пользователя twitter.com. Это означает, что я не могу выйти из системы, если я не отправлю пользователя на twitter.com.

Возможно ли это с помощью API? Каков наилучший способ реализовать это?

Ответы [ 3 ]

32 голосов
/ 29 декабря 2009

Вы можете использовать oauth / authenticate и добавить force_login=true, как указано в GET oauth / authenticate . Это предложит пользователю ввести форму для входа.

29 голосов
/ 25 декабря 2009

Сессия с Twitter определяется файлом cookie, принадлежащим Twitter, который вы не можете контролировать. Вы не можете выйти из Twitter от их имени.

Если вы хотите, чтобы кто-то мог использовать вашу функцию «переключить учетную запись в Твиттере», вам необходимо снова передать его в рукопожатие OAuth, но вместо пути /oauth/authenticate используйте путь /oauth/authorize. Это позволит пользователю переключать свои учетные данные в Твиттере во время рукопожатия, а не просто выполнять повторную аутентификацию с использованием существующего сеанса в Твиттере.

В качестве альтернативы, у вас может быть отдельное представление о пользователях в вашем собственном приложении, когда у вас есть собственная модель пользователя, с которой связано множество учетных записей Twitter. Таким образом, вы могли бы позволить своим пользователям переключать учетные записи более беззаботно. Им придется авторизовать ваше приложение заранее для каждой из их учетных записей Twitter, но после этого у вас будут все их ключи oauth для каждой из учетных записей Twitter.

1 голос
/ 02 октября 2014

Извините за комментирование в качестве ответа. Решение abraham прекрасно работает, но для очистки поля имени пользователя также необходимо добавить screen_name= к GET-запросу.

...