Existe-t-il un moyen d’obtenir l’ID de messagerie d’un utilisateur après avoir vérifié son identité Twitter à l’aide de OAuth?

Je suis nouveau sur OAuth et je joue avec l’API Twitter. Je suis capable de récupérer les informations d’identification d’un utilisateur après l’authentification en faisant une demande à l’ http://api.twitter.com/1/account/verify_credentials.xml . La réponse contient l’ID utilisateur, le nom d’écran, etc., mais pas l’identifiant de messagerie.

Est-il possible de récupérer l’identifiant de messagerie de l’utilisateur?

Mettre à jour

Je crois que Facebook fournit ces informations si vous demandez spécifiquement des permissions étendues . Y a-t-il quelque chose de similaire pour Twitter?

    L’adresse email de l’utilisateur ne peut pas être récupérée via l’API. Ceci est une décision de conception délibérée par l’équipe 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 en liste blanche. Voir https://dev.twitter.com/rest/reference/get/account/verify_credentials pour plus de détails sur l’appel de l’API et ce formulaire pour demander la liste blanche de votre application.

    Pour OutsourceFactor , qui est écrit en Python / Django, j’obtiens le nom d’utilisateur via oAuth1, puis crée un courrier électronique sous le nom “username@twitter.com”, garanti unique sur Twitter. Ensuite, je l’ai haché pour obtenir un UUID agréable à utiliser et associé à mon compte d’utilisateur local. Même chose pour Yahoo. Google et Facebook utilisent oAuth2 et ils me donnent l’adresse email sur demande, ce qui est sympa.

    Pour assurer plusieurs associations sociales avec un seul compte, j’autorise les associations de comptes sociaux UNIQUEMENT une fois que l’utilisateur a créé un compte local et qu’il est connecté.

    Ainsi, vous devez d’abord créer un compte (compte local), puis utiliser l’un des fournisseurs de social oAuth 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’ID de twitter. Alors, utilisez-le simplement. Vous pouvez demander une adresse électronique plus tard ou avant l’association.

    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’enregistrer avec Twitter”.

    Plus récemment (début 2015), Twitter a ajouté le support des adresses e-mail via un second appel de service, mais sous certaines conditions abusives.

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

    Alors maintenant, c’est possible, mais mon avis est de continuer à implémenter une connexion unique OAuth every-provider-but-twitter. Ils doivent être boycottés jusqu’à ce qu’ils agissent normalement, je veux dire comme tout autre fournisseur OAuth.

    Dans Android avec Fabric , je demande l’adresse électronique de l’utilisateur comme ceci:

     TwitterAuthClient authClient = new TwitterAuthClient(); authClient.requestEmail(session, new Callback() { @Override public void success(Result 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

    Qui a dit que ce n’était pas possible ???

    Je me suis intégré à mon application iOS après avoir ajouté la liste blanche à l’application. Vérifiez ma réponse ici .

    Dans mon cas, chaque fois que j’obtiens la réponse, j’ai obtenu un identifiant d’authentification unique pour chaque utilisateur et pour cet utilisateur à chaque fois. J’ai donc utilisé cet identifiant pour créer un email comme unique_id@twitter.com et vérifier si c’est déjà sur mon site (pour la première fois ce n’est pas le cas) et ensuite enregistrer l’utilisateur. Ensuite, s’il se connecte une deuxième fois, je crée à nouveau le courrier électronique et vérifie s’il est déjà installé. Par cela, je n’ai pas besoin de lui faire créer un compte local en premier et peut l’identifier pour se connecter.

    Voici l’exemple sur la façon d’obtenir un email d’utilisateur Twitter dans Laravel, et sur coditty.com vous pouvez trouver l’exemple complet en utilisant Angular + Laravel

      // get token secret from db $token = TwitterTokens::where('oauth_token', $request->input('oauth_token'))->first(); // open twitter connection $connection = new \Abraham\TwitterOAuth\TwitterOAuth( $this->twitter_consumer_key, $this->twitter_secret, $request->input('oauth_token'), $token->oauth_token_secret// twitter secret from DB ); // get acces token $access_token = $connection->oauth("oauth/access_token", ["oauth_verifier" => $request->input('oauth_verifier')]); // new TwitterOAuth instance to get email $twitterOAuth = new \Abraham\TwitterOAuth\TwitterOAuth( $this->twitter_consumer_key, $this->twitter_secret, $access_token['oauth_token'], $access_token['oauth_token_secret'] ); // Let's get the user's info with email $twitterUser = $twitterOAuth->get('account/verify_credentials', ['include_entities' => 'false','include_email'=>'true','skip_status'=>'true',]); // output user object from twitter in your Log file Log::info(['user'=>$twitterUser]); 

    Ajoutez ce code!

    $params = array('include_email' => 'true', 'include_entities' => 'false', 'skip_status' => 'true');

     `$data = $connection->get('account/verify_credentials', $params); // get the data` 

    // getting twitter user profile details $twt_id = $data->id; //twitter user id $twt_email = $data->email; //twitter user email

    Commander la procédure complète ici .

    Qui dit que vous ne pouvez pas obtenir de courrier électronique des utilisateurs, la case à cocher «Demander des adresses électroniques des utilisateurs» est disponible sous les permissions de l’application sur apps.twitter.com . Les champs URL de la politique de confidentialité et des conditions d’utilisation doivent être renseignés dans les parameters de l’application pour que l’access à l’adresse e-mail puisse fonctionner. Si cette option est activée, les utilisateurs seront informés via la boîte de dialog oauth / authorize que votre application peut accéder à leur adresse e-mail.