2009-12-25 3 views
28

Estoy usando OAuth en mi aplicación web, y los usuarios pueden iniciar sesión con Twitter.Twitter API - Cerrar sesión

Quiero agregar el botón "cambiar la cuenta de Twitter", que en realidad borra la sesión y luego abre el authorize_url.

Como al borrar la sesión de mi aplicación web no se cierra la sesión de Twitter, el authorize_url autenticará automáticamente al usuario actual de twitter.com. Eso significa que no puedo cerrar la sesión, a menos que envíe al usuario a twitter.com.

¿Es posible con la API? ¿Cuál es la mejor manera de implementar esto?

Respuesta

29

La sesión con Twitter está definida por una cookie propiedad de Twitter, algo sobre lo que no tiene control. No puede cerrar sesión en Twitter en su nombre.

Si desea que alguien pueda usar su funcionalidad de "cambiar cuenta de twitter", deberá pasarlos de nuevo al enlace de OAuth, pero use la ruta /oauth/authorize en lugar de la ruta /oauth/authenticate. Esto le permitirá al usuario cambiar sus credenciales de usuario en Twitter durante el apretón de manos en lugar de volver a autenticarse usando su sesión de Twitter existente.

Alternativamente, podría tener una noción separada de usuarios en su propia aplicación mediante la cual tiene su propio modelo de usuario que tiene muchas cuentas de Twitter asociadas. De esta forma, podría permitir que sus usuarios cambien las cuentas de forma más regular. Tendrían que autorizar su aplicación por adelantado para cada una de sus cuentas de Twitter, pero después de eso tendrían todas sus claves para cada una de sus cuentas de Twitter.

+0

¡Gracias! Utilicé/authenticate/sin saber realmente la diferencia, pero con autorización muestra a los usuarios su cuenta en twitter. – elado

+0

Quién puede publicar el código de bengottlieb/Twitter-OAuth-iPhone. No puedo desconectarme – Voloda2

+2

Cómo cerrar sesión en Twitter e iniciar sesión con otra cuenta. ¿Podrías poner un código? – Emerald214

32

Puede usar oauth/authenticate y agregar force_login=true como se especifica en GET oauth/authenticate. Esto solicitará al usuario un formulario de inicio de sesión.

+0

funcionó muy bien, pero el formulario todavía contiene el nombre de usuario del usuario previamente conectado :(. –

+0

@MubasharAhmad Entonces, ¿y estás seguro de que no se trata solo de que el navegador rellene automáticamente el formulario? – abraham

+0

estaba usando/session/destroy url para iniciar sesión pero parece que ya no está disponible, y mostraba un formulario de inicio de sesión en blanco. De todos modos, no estoy seguro de que sea un control web o un twitter. Pero puede que tengas razón verificará la función de control del navegador para que funcione. –

0

Perdón por comentar como respuesta. abraham solution funciona muy bien, pero para borrar el campo de nombre de usuario también necesita agregar screen_name= a la solicitud GET.

Cuestiones relacionadas