Comment récupérer l'adresse email d'un compte avec l'API Twitter ?

Comment récupérer l'adresse email d'un compte avec l'API Twitter ?

Dans ce billet, nous allons nous servir de la librairie TwitterOauth qui permet d’interagir avec l’API de Twitter, et nous allons demander une permission supplémentaire à Twitter afin de récupérer l’adresse email de la personne qui se connectera à votre application.

Dans un précédent billet, je vous expliquais comment récupérer certaines informations d’un compte Twitter (ID du compte, son nom d’utilisateur, son d’affichage, son adresse email) en générant une « lead card » via le tableau de bord des publicités Twitter (Ads Twitter). Je vous expliquais également comment se servir de ces informations pour les enregistrer dans une liste d’email pour votre campagne d’emailing sur MailChimp.

L’application qui sera mise en place tout le long de ce tutoriel servira de service de connexion à un site Internet, l’adresse email de l’utilisateur nous permettra de l’identifier facilement si un compte est déjà présent, ou de lui créer un compte si l’adresse email n’est pas encore présente dans la base de données.

Création de l’application Twitter

Pour cela, rendez-vous sur apps.twitter.com et cliquez sur « Create New App », puis remplissez le formulaire avec des informations correctes :

  1. Name : nom de l’application
  2. Description : description de l’application, elle sera affichée lorsqu’un utilisateur sera invité à lier son compte avec l’application
  3. Website : le site sur lequel on retrouvera l’application
  4. Callback URL : l’URL qui sera utilisée pour rappeler l’utilisateur sur votre site et qui traitera ses informations
  5. Pour terminer, acceptez l’accord de développeur en cochant la case « Yes, I agree » et cliquez sur le bouton « Create your Twitter application »

Une fois que votre application est créée, cliquez sur l’onglet « Permissions ». Il est recommandé de bien réfléchir sur le niveau d’accès de votre application avant qu’elle ne soit mise en place, ne soyez pas trop gourmand, et utilisez un niveau d’accès justifié (les utilisateurs n’accepteront pas forcément de lier leur compte à une application qui peut lire leurs messages privés).

  • Read only : permet uniquement la lecture des informations d’un compte
  • Read and Write : permet la lecture et l’écriture d’informations d’un compte
  • Read, Write and Access direct messages : permet un accès aux droits précédents, mais permet en plus la lecture et l’écriture de messages privés

Cliquez ensuite sur l’onglet « Keys and Access Tokens ». Vous retrouverez dans cette section, les informations de votre application pour la connexion à l’API Twitter, ainsi que le niveau d’accès à cette dernière.

Notez les deux clés (« Consumer Key » et « Consumer Secret »), elles nous serviront pour la suite du tutoriel. Notez également que nous utiliseront un niveau d’accès en lecture seule, utile pour de simples connexions.

Demander une permission supplémentaire

Par défaut, l’API Twitter ne délivre que certaines informations. Même s’il y a de quoi faire avec celles-ci, il manque cependant la date de naissance, l’URL Vine du compte, et dans notre cas : l’adresse email du compte.

Pour demander une permission supplémentaire, rendez-vous sur support.twitter.com/forms/platform et cochez la case « J’ai besoin d’accéder aux autorisations spéciales ». Vous devrez compléter le formulaire avec les bonnes informations, soyez le plus précis possible.

  1. Nom d’Application : saisissez le nom de l’application que vous avez utilisé lors de la création de votre application
  2. ID de l’application : elle est visible dans l’URL de la page lorsque vous visualisez les informations de l’application : https://apps.twitter.com/app/#######/settings
  3. Autorisations demandées : saisissez précisément les informations relatives à votre application (application de connexion par exemple), et définissez vos besoins (adresse email, date de naissance, etc…)
  4. Nom d’utilisateur Twitter : ce champ est déjà complété
  5. Votre email : ce champ est déjà complété

Cliquez ensuite sur « Envoyer » pour valider la demande. Le délai d’attente est en général de 24h mais pour les fois où j’ai fait la demande, ça n’a prit qu’une heure. Soyez patient.

Une fois que la permission supplémentaire demandée est active, rendez-vous dans l’onglet « Settings » afin de compléter les champs manquants dans le formulaire (ils sont obligatoires pour utiliser la nouvelle permission) :

  1. Privacy Policy URL : URL d’accès à la politique de confidentialité de votre site/application
  2. Terms of Service URL : URL d’accès aux Conditions Générales d’Utilisation (CGU) de votre site/application

Une fois que ces informations sont saisies, rendez-vous dans l’onglet « Permissions » et cochez la case « Request email addresses from users » afin que les utilisateurs fournissent leur adresse email lors de leur connexion.

Il est important de noter que tous les accès (comptes liés à votre application) effectués au préalable ne seront plus utilisable, au même titre qu’un renouvellement des clés d’authentification de votre application.

Script de connexion en PHP

Pour utiliser la librairie TwitterOauth (une bibliothèque PHP très populaire pour l’utilisation de l’API Twitter OAuth REST, créée par @abraham), je vous conseille vivement d’utiliser Composer (un magnifique outil pour les développeurs pour installer des paquets et leurs dépendances à partir de Packagist).

Composer est un gestionnaire de dépendance qui vous permettra de définir les différentes dépendances pour votre projet. Composer utilise un fichier composer.json qui contient plusieurs informations sur le projet dont la liste des librairies utilisées. Il est ensuite capable de télécharger automatiquement ces librairies (et les dépendances associées) et de générer un "autoloader" pour les utiliser simplement dans vos projets PHP.

Connexion des utilisateurs (connexion.php)

<?php

// Chargement du fichier "autoload.php" généré par Composer.
require 'vendor/autoload.php';

// Utilisation du "namespace" TwitterOAuth.
use Abraham\TwitterOAuth\TwitterOAuth;

// Définition des constantes avec les informations récupérées plus tôt dans le tutoriel.
define('CONSUMER_KEY', 'u2wdr9TZR967WYx');
define('CONSUMER_SECRET', 'SEF4nnV79u9Ekg9G7Z6Av8h9Sfe5U435krAM3wLtKRbg9aHw93');
define('OAUTH_CALLBACK', 'http://www.mon.app/callback.php');

// Construction de l'instance "TwitterOAuth" avec les deux clés (Consumer Key, Consumer Secret).
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

// Autoriser l'accès à un compte utiliser via OAuth commence par l'obtention d'un "token" temporaire.
// Ce "token" est valide pour quelques minutes et sera bientôt inutilisable.
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));

// Stockage du token (public et secret) dans deux sessions, n'oubliez pas de déclarer le "session_start()" dans votre code.
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

// Construction de l'URL de connexion à l'application Twitter.
$url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token']));

// Redirection de l'utilisateur sur la page de connexion à l'application Twitter.
header("Location: $url");

?>

Rappel des informations (callback.php)

<?php

// Chargement du fichier "autoload.php" généré par Composer.
require 'vendor/autoload.php';

// Utilisation du "namespace" TwitterOAuth.
use Abraham\TwitterOAuth\TwitterOAuth;

// Définition des constantes avec les informations récupérées plus tôt dans le tutoriel.
define('CONSUMER_KEY', 'u2wdr9TZR967WYx');
define('CONSUMER_SECRET', 'SEF4nnV79u9Ekg9G7Z6Av8h9Sfe5U435krAM3wLtKRbg9aHw93');

// Rappel du token (public et secret) temporaire.
$request_token = [];
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];

if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
    // Abort! Something is wrong.
}

// Construction de l'instance "TwitterOAuth" avec les clés de votre application (Consumer Key, Consumer Secret)
// et les clés temporaires de l'utilisateur récupérées lors de sa connexion.
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $request_token['oauth_token'], $request_token['oauth_token_secret']);

// Transformation du "token" temporaire en "token" définitif (valable jusqu'à la révoquation de l'application ou jusqu'au changement d'un paramètre dans votre application Twitter).
$access_token = $connection->oauth("oauth/access_token", ["oauth_verifier" => $_REQUEST['oauth_verifier']]);

// Stockage des informations de connexion à l'API (en session, ou dans une base de données).
$_SESSION['access_token'] = $access_token;

// Redirection de l'utilisateur sur la page d'affichage de ses informations.
header("Location: credentials.php");

?>

Affichage des informations du profil (credentials.php)

<?php

// Chargement du fichier "autoload.php" généré par Composer.
require 'vendor/autoload.php';

// Utilisation du "namespace" TwitterOAuth.
use Abraham\TwitterOAuth\TwitterOAuth;

// Définition des constantes avec les informations récupérées plus tôt dans le tutoriel.
define('CONSUMER_KEY', 'u2wdr9TZR967WYx');
define('CONSUMER_SECRET', 'SEF4nnV79u9Ekg9G7Z6Av8h9Sfe5U435krAM3wLtKRbg9aHw93');

// Récupération du token définitif stocké dans la session.
$access_token = $_SESSION['access_token'];

// Construction de l'instance "TwitterOAuth" avec les clés de votre application (Consumer Key, Consumer Secret)
// et les clés définitive de l'utilisateur stockées dans la variable "$access_token".
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

// Utilisation de la fonction "account/verify_credentials" de l'API Twitter
$user = $connection->get("account/verify_credentials");

// Voici les informations récupérés à partir du profil de l'utilisateur
var_dump($user);

/** Quelques utilisations :
  * $user_id       =    $user->id_str;        // ID du compte Twitter
  * $name          =    $user->name;          // Nom affiché sur le profil du compte
  * $screen_name   =    $user->screen_name;   // Nom d'utilisateur du compte
  * $email         =    $user->email;         // Adresse email du compte
  * $location      =    $user->location;      // Localisation de l'utilisateur
**/

?>
Maxence Rose

Écrit par Maxence Rose

Hyperactif du Web, fondateur de YubiGeek, passionné de technologie, de sciences, et fasciné par Google, j'écris ce que bon me semble et je teste pour vous les derniers services du Web.

Vous vous êtes abonné avec succès YubiGeek
Génial ! Ensuite, passez à la caisse complète pour obtenir un accès complet à tous les contenus premium.
Nous saluons votre retour ! Vous vous êtes connecté avec succès.
Succès ! Votre compte est entièrement activé, vous avez désormais accès à tout le contenu.