86 votes

Existe-t-il un moyen d'obtenir l'identifiant e-mail d'un utilisateur après avoir vérifié son identité Twitter en utilisant OAuth ?

Je suis novice en matière d'OAuth et j'ai joué avec l'API Twitter. Je suis capable de récupérer les informations d'identification d'un utilisateur après authentification en faisant une requête à http://api.twitter.com/1/account/verify_credentials.xml . La réponse contient l'identifiant de l'utilisateur, le nom d'écran etc. mais pas l'identifiant de l'email.

Est-il possible de récupérer l'adresse e-mail de l'utilisateur ?

Mise à jour

Je pense que Facebook fournit ces informations si vous demandez spécifiquement à ce que permissions étendues . Existe-t-il quelque chose de similaire pour Twitter ?

106voto

DWRoelands Points 2891

L'adresse électronique de l'utilisateur ne peut pas être récupérée via l'API. Il s'agit d'une décision de conception délibérée de l'équipe chargée de l'API.

MISE À JOUR 2015.08.18 :

Il est possible de demander une adresse électronique aux utilisateurs, mais cela nécessite que votre application soit inscrite sur une liste blanche. Voir https://dev.twitter.com/rest/reference/get/account/verify_credentials pour les détails de l'appel API et ce formulaire pour demander la mise sur liste blanche de votre application.

16voto

Val Neekman Points 1238

Pour Facteur d'externalisation qui est écrit en Python / Django, je récupère le nom d'utilisateur via oAuth1, puis je construis un email en tant que "username@twitter.com" qui est garanti unique dans tout twitter. Puis je le hache pour obtenir un UUID sympa à utiliser et à associer à mon compte utilisateur local. Même chose pour Yahoo. Google et Facebook utilisent oAuth2 et me donnent l'adresse électronique sur demande, ce qui est bien.

Pour garantir de multiples associations sociales avec un seul compte, j'autorise les associations de comptes sociaux UNIQUEMENT après que l'utilisateur a créé localement un compte et est connecté.

Vous devez donc d'abord créer un compte (compte local), puis vous pouvez utiliser n'importe lequel des fournisseurs d'authentification sociale pour faciliter vos futures connexions. C'est le meilleur rapport qualité/prix pour mon site.

Quoi qu'il en soit, vous obtenez une forme unique d'identification de Twitter. Alors utilisez-la. Vous pouvez demander une adresse e-mail plus tard ou avant l'association.

3voto

Moonchild Points 1144

L'adresse e-mail est obscurcie par Twitter dans leurs réponses OAuth. Ce qui a toujours été un grand problème pour les personnes souhaitant inclure une fonction "S'inscrire à Twitter".

Plus récemment (début 2015), Twitter a ajouté la prise en charge des adresses électroniques par le biais d'un deuxième appel de service, mais sous certaines conditions, abusives.

https://dev.twitter.com/rest/reference/get/account/verify_credentials

Maintenant, c'est possible, mais mon avis est de continuer à mettre en œuvre une authentification unique OAuth pour tous les fournisseurs, sauf Twitter. Ils doivent être boycottés jusqu'à ce qu'ils agissent normalement, c'est-à-dire comme tous les autres fournisseurs OAuth.

3voto

Paul Muriithi Points 41

Dans Android, en utilisant Tissu je demande l'adresse électronique de l'utilisateur comme ceci :

TwitterAuthClient authClient = new TwitterAuthClient();

authClient.requestEmail(session, new Callback<String>() {

    @Override
    public void success(Result<String> result) {
        // Do something with the result, which provides the email address
    }

    @Override
    public void failure(TwitterException exception) {
      // Do something on failure
    }
});

Voir http://docs.fabric.io/Android/twitter/request-user-email-address.html

1voto

Mehedi Hasan Points 11

Dans mon cas, chaque fois que je reçois la réponse, j'ai un identifiant d'authentification unique pour chaque utilisateur et c'est le même pour cet utilisateur à chaque fois. J'ai donc utilisé cet identifiant pour créer un e-mail comme unique_id@twitter.com et vérifier s'il est déjà sur mon site (pour la première fois, il ne l'est pas), puis enregistrer l'utilisateur. Ensuite, s'il se connecte une deuxième fois, je crée à nouveau l'adresse électronique et je vérifie si elle est déjà présente. De cette façon, je n'ai pas besoin de lui faire créer un compte local et je peux l'identifier pour se connecter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X