Вопрос
Я использую OAuth в своем веб-приложении, и пользователи могут входить в систему через Twitter.
Я хочу добавить кнопку «переключить учетную запись Twitter», которая фактически очищает сеанс, а затем открывает авторизацию_url.
Поскольку очистка сеанса в моем веб-приложении не приводит к выходу из Twitter, авторизация_url автоматически аутентифицирует текущего пользователя twitter.com.Это означает, что я не могу выйти из системы, пока не отправлю пользователя на twitter.com.
Возможно ли это с помощью API?Каков наилучший способ реализовать это?
Решение
Сеанс с Twitter определяется файлом cookie, принадлежащим Twitter, и вы не можете его контролировать.Вы не можете выйти из Твиттера от их имени.
Если вы хотите, чтобы кто-то мог использовать вашу функцию «переключить учетную запись Twitter», вам нужно будет снова передать его на рукопожатие OAuth, но используйте /oauth/authorize
путь вместо /oauth/authenticate
путь.Это позволит пользователю менять свои учетные данные в Твиттере во время рукопожатия вместо того, чтобы просто проходить повторную аутентификацию, используя существующий сеанс Твиттера.
В качестве альтернативы вы можете иметь отдельное представление о пользователях в своем собственном приложении, при этом у вас будет собственная модель пользователя, с которой связано множество учетных записей Twitter.Таким образом, вы можете позволить своим пользователям переключать учетные записи более незаметно.Им придется заранее авторизовать ваше приложение для каждой из своих учетных записей в Твиттере, но после этого у вас будут все их ключи oauth для каждой из их учетных записей в Твиттере.
Другие советы
Вы можете использовать oauth/аутентификацию и добавить force_login=true
как указано в GET oauth/аутентификация.Это предложит пользователю форму входа в систему.
Извините за комментарий в качестве ответа.Решение abraham отлично работает, но для очистки поля имени пользователя вам также необходимо добавить screen_name=
для получения запроса.