Soy nuevo en OAuth y he estado jugando con la API de Twitter. Puedo obtener las credenciales de un usuario después de la autenticación haciendo una solicitud a http://api.twitter.com/1/account/verify_credentials.xml
. La respuesta contiene la identificación del usuario, el nombre de pantalla, etc. pero no la identificación del correo electrónico.
¿Es posible recuperar el ID de correo electrónico del usuario?
Actualizar
Creo que Facebook proporciona esta información si solicita específicamente permisos extendidos . ¿Hay algo similar para Twitter?
twitter
oauth
twitter-oauth
Manoj Govindan
fuente
fuente
Respuestas:
La dirección de correo electrónico del usuario no se puede recuperar a través de la API. Esta es una decisión de diseño deliberada del equipo de API.
ACTUALIZACIÓN 2015.08.18:
Es posible solicitar una dirección de correo electrónico a los usuarios, pero requiere que su aplicación esté incluida en la lista blanca. Consulte https://dev.twitter.com/rest/reference/get/account/verify_credentials para obtener detalles de la llamada a la API y este formulario para solicitar la inclusión en la lista blanca de su aplicación.
fuente
Para OutsourceFactor , que está escrito en Python / Django, obtengo el nombre de usuario a través de oAuth1, luego construyo un correo electrónico como "[email protected]" que se garantiza que será único en todo Twitter. Luego lo hash para obtener un buen UUID para usar y asociar con mi cuenta de usuario local. Lo mismo ocurre con Yahoo. Google y Facebook usan oAuth2 y me dan la dirección de correo electrónico a pedido, lo cual es bueno.
Para garantizar múltiples asociaciones sociales con una sola cuenta, permito asociaciones de cuentas sociales SOLAMENTE después de que el usuario haya creado una cuenta localmente y haya iniciado sesión.
Por lo tanto, primero debe crear una cuenta (cuenta local), luego puede usar cualquiera de los proveedores de oAuth sociales para facilitar sus inicios de sesión futuros. Esta es la mejor inversión para mi sitio.
De todos modos, obtienes alguna forma única de identificación de Twitter. Así que úsala. Puede solicitar una dirección de correo electrónico más tarde o antes de la asociación.
fuente
La dirección de correo electrónico está ofuscada por Twitter en sus respuestas de OAuth. Lo que siempre ha sido un gran problema para las personas que desean incluir una función de "Registrarse en Twitter".
Más recientemente (principios de 2015), Twitter agregó soporte para direcciones de correo electrónico a través de una segunda llamada de servicio, pero bajo ciertas condiciones de abuso.
https://dev.twitter.com/rest/reference/get/account/verify_credentials
Así que ahora es posible, pero mi opinión es continuar implementando un inicio de sesión único de OAuth para todos los proveedores excepto Twitter. Deben ser boicoteados hasta que actúen normalmente, es decir, como cualquier otro proveedor de OAuth.
fuente
En Android usando Fabric , solicito la dirección de correo electrónico del usuario de esta manera:
Ver http://docs.fabric.io/android/twitter/request-user-email-address.html
fuente
En mi caso, cada vez que obtengo la respuesta, obtengo una identificación de autenticación única para cada usuario y es la misma para ese usuario cada vez. Entonces usé esa identificación para crear un correo electrónico como [email protected] y verificar si ya está en mi sitio (por primera vez no lo está) y luego registrar al usuario. Luego, si inicia sesión por segunda vez, simplemente vuelvo a crear el correo electrónico y verifico si ya está allí. Con esto, no tengo que obligarlo a crear una cuenta local primero y poder identificarlo para iniciar sesión.
fuente
Aquí está el ejemplo de cómo obtener el correo electrónico de los usuarios de Twitter en Laravel, y en coditty.com puede encontrar el ejemplo completo usando Angular + Laravel
fuente
Entré en mi aplicación iOS después de incluirla en la lista blanca. Mira mi respuesta aquí .
fuente
¡Agrega este código!
$params = array('include_email' => 'true', 'include_entities' => 'false', 'skip_status' => 'true');
// getting twitter user profile details $twt_id = $data->id; //twitter user id $twt_email = $data->email; //twitter user email
Consulte el procedimiento completo aquí .
fuente
Quien dice que no puede recibir el correo electrónico de los usuarios, la casilla de verificación "Solicitar direcciones de correo electrónico de los usuarios" está disponible en los permisos de la aplicación en apps.twitter.com . Los campos URL de la Política de privacidad y URL de los Términos de servicio deben completarse en la configuración de la aplicación para que el acceso a la dirección de correo electrónico funcione. Si está habilitado, los usuarios serán informados a través del cuadro de diálogo oauth / autorizar que su aplicación puede acceder a su dirección de correo electrónico.
fuente