web-dev-qa-db-fra.com

Exemple le plus simple PHP pour la récupération de user_timeline avec l'API Twitter version 1.1

En raison du retrait de l'API Twitter de Twitter à compter du 11 juin 201 , le script ci-dessous ne fonctionne plus.

// Create curl resource 
$ch = curl_init(); 
// Set url 
curl_setopt($ch, CURLOPT_URL, "http://Twitter.com/statuses/user_timeline/myscreenname.json?count=10"); 
// Return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
// $output contains the output string 
$output = curl_exec($ch); 
// Close curl resource to free up system resources 
curl_close($ch);

if ($output) 
{
    $tweets = json_decode($output,true);

    foreach ($tweets as $Tweet)
    {
        print_r($Tweet);
    }
}

Comment puis-je obtenir le user_timeline (états récents) avec le moins de code possible?

J'ai trouvé ceci: https://dev.Twitter.com/docs/api/1.1/get/statuses/user_timeline mais j'obtiens l'erreur suivante:

"{"errors":[{"message":"Could not authenticate you","code":32}]}"

Il existe de nombreuses classes, mais après en avoir essayé plusieurs, aucune ne semble fonctionner à cause de ces mises à jour sur Twitter, et certaines d'entre elles sont des classes assez avancées avec beaucoup de fonctionnalités dont je n'ai pas vraiment besoin.

Quel est le moyen le plus simple/le plus court d’obtenir le statut d’utilisateur récent avec PHP?

284
fellowworldcitizen

Remarque importante: À partir de la mi-2018, le processus d'obtention de jetons d'API Twitter devenait beaucoup plus bureaucratique. Il m’a fallu une semaine de travail pour recevoir un ensemble de jetons d’API, et c’est pour un projet open source pour vous les gars et les filles avec plus de 1,2 million d'installations sur Packagist et d'étoiles 1,6k sur Github, qui devraient théoriquement être prioritaires.

Si vous êtes chargé d'utiliser l'API Twitter pour votre travail, vous devez tenir compte de ce temps d'attente potentiellement extrêmement long. Pensez également à d'autres médias sociaux, tels que Facebook ou Instagram, et proposez ces options, car le processus de récupération de leurs jetons est instantané.


Vous voulez donc utiliser l'API Twitter v1.1?

Remarque: les fichiers correspondants sont sur GitHub.

La version 1.0 sera bientôt obsolète et les requêtes non autorisées ne seront pas autorisées. Alors, voici un article pour vous aider à faire exactement cela, avec une classe PHP pour vous simplifier la vie.

1. Créez un compte développeur: Configurez vous-même un compte développeur sur Twitter

Vous devez visiter le site officiel des développeurs sur Twitter et vous inscrire pour créer un compte de développeur. Ceci est une étape gratuite et nécessaire pour effectuer des demandes pour l'API v1.1.

2. Créer une application: Créer une application sur le site de développement de Twitter

Quelle? Vous pensiez pouvoir faire des requêtes non authentifiées? Pas avec l'API v1.1 de Twitter. Vous devez visiter http://dev.Twitter.com/apps et cliquer sur le bouton "Créer une application".

Enter image description here

Sur cette page, indiquez les détails que vous souhaitez. Pour moi, cela importait peu, car je voulais juste faire une charge de demandes de blocage pour me débarrasser des adeptes du spam. Le fait est que vous allez vous procurer un ensemble de clés uniques à utiliser pour votre application.

Donc, le but de créer une application est de vous donner (et Twitter) un ensemble de clés. Ceux-ci sont:

  • La clé de consommation
  • Le secret du consommateur
  • Le jeton d'accès
  • Le secret du jeton d'accès

Il y a un peu d'information ici sur quoi servent ces jetons.

3. Créer des jetons d'accès : vous en aurez besoin pour effectuer des requêtes avec succès

OAuth demande quelques jetons. Vous devez donc les générer pour vous.

Enter image description here

Cliquez sur "créer mon jeton d'accès" en bas. Ensuite, une fois que vous faites défiler de nouveau vers le bas, vous aurez quelques clés nouvellement générées. Vous devez récupérer les quatre clés précédemment étiquetées de cette page pour vos appels d'API. Notez-les quelque part.

4. Changer le niveau d'accès : Vous ne voulez pas en lecture seule, n'est-ce pas?

Si vous souhaitez utiliser cette API de manière décente, vous devrez modifier vos paramètres en Lecture et écriture si vous effectuez autre chose que la récupération de données standard à l'aide de GET requêtes.

Enter image description here

Choisissez l'onglet "Paramètres" en haut de la page.

Enter image description here

Donnez à votre application un accès en lecture/écriture et cliquez sur "Mettre à jour" en bas.

Vous pouvez en savoir plus sur le modèle de permission des applications que Twitter utilise ici.


5. Ecrivez du code pour accéder à l'API : je l'ai fait pour vous

J'ai combiné le code ci-dessus, avec quelques modifications et changements, dans une classe PHP. Il est donc très simple de faire les requêtes dont vous avez besoin.

Ceci utilise OAuth et l'API Twitter v1.1 , et la classe J'ai créé ce que vous pouvez trouver ci-dessous.

require_once('TwitterAPIExchange.php');

/** Set access tokens here - see: https://dev.Twitter.com/apps/ **/
$settings = array(
    'oauth_access_token' => "YOUR_OAUTH_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_OAUTH_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

Assurez-vous de mettre les clés que vous avez obtenues de votre application ci-dessus dans leurs espaces respectifs.

Ensuite, vous devez choisir une URL à laquelle vous souhaitez faire une demande. Twitter a leur documentation API pour vous aider à choisir quelle URL et le type de requête (POST ou GET).

/** URL for REST request, see: https://dev.Twitter.com/docs/api/1.1/ **/
$url = 'https://api.Twitter.com/1.1/blocks/create.json';
$requestMethod = 'POST';

Dans la documentation, chaque URL indique ce que vous pouvez lui transmettre. Si nous utilisons l'URL "blocks" comme celle ci-dessus, je peux transmettre les paramètres POST suivants:

/** POST fields required by the URL above. See relevant docs as above **/
$postfields = array(
    'screen_name' => 'usernameToBlock', 
    'skip_status' => '1'
);

Maintenant que vous avez défini ce que vous voulez faire avec l'API, il est temps de faire la demande.

/** Perform the request and echo the response **/
$Twitter = new TwitterAPIExchange($settings);
echo $Twitter->buildOauth($url, $requestMethod)
             ->setPostfields($postfields)
             ->performRequest();

Et pour une demande POST, ça y est!

Pour une demande GET, c'est un peu différent. Voici un exemple:

/** Note: Set the GET field BEFORE calling buildOauth(); **/
$url = 'https://api.Twitter.com/1.1/followers/ids.json';
$getfield = '?username=J7mbo';
$requestMethod = 'GET';
$Twitter = new TwitterAPIExchange($settings);
echo $Twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();     

Exemple de code final : Pour une simple requête GET concernant la liste de mes abonnés.

$url = 'https://api.Twitter.com/1.1/followers/list.json';
$getfield = '?username=J7mbo&skip_status=1';
$requestMethod = 'GET';
$Twitter = new TwitterAPIExchange($settings);
echo $Twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();  

J'ai mis ces fichiers sur GitHub avec le crédit de @ lackovic10 et de @rivers! J'espère que quelqu'un le trouvera utile; Je sais que je l'ai fait (je l'ai utilisé pour le blocage en masse dans une boucle).

En outre, pour les personnes sur Windows qui ont des problèmes avec les certificats SSL, regardez cet article . Cette bibliothèque utilise cURL sous le capot, vous devez donc vous assurer que vos certs cURL sont probablement configurés. Google est aussi votre ami.

810
Jimbo

Allez sur dev.Twitter.com et créez une application . Cela vous fournira les informations d'identification dont vous avez besoin. Voici une implémentation que j'ai récemment écrite avec PHP et cURL .

<?php
    function buildBaseString($baseURI, $method, $params) {
        $r = array();
        ksort($params);
        foreach($params as $key=>$value){
            $r[] = "$key=" . rawurlencode($value);
        }
        return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
    }

    function buildAuthorizationHeader($oauth) {
        $r = 'Authorization: OAuth ';
        $values = array();
        foreach($oauth as $key=>$value)
            $values[] = "$key=\"" . rawurlencode($value) . "\"";
        $r .= implode(', ', $values);
        return $r;
    }

    $url = "https://api.Twitter.com/1.1/statuses/user_timeline.json";

    $oauth_access_token = "YOURVALUE";
    $oauth_access_token_secret = "YOURVALUE";
    $consumer_key = "YOURVALUE";
    $consumer_secret = "YOURVALUE";

    $oauth = array( 'oauth_consumer_key' => $consumer_key,
                    'oauth_nonce' => time(),
                    'oauth_signature_method' => 'HMAC-SHA1',
                    'oauth_token' => $oauth_access_token,
                    'oauth_timestamp' => time(),
                    'oauth_version' => '1.0');

    $base_info = buildBaseString($url, 'GET', $oauth);
    $composite_key = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
    $oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
    $oauth['oauth_signature'] = $oauth_signature;

    // Make requests
    $header = array(buildAuthorizationHeader($oauth), 'Expect:');
    $options = array( CURLOPT_HTTPHEADER => $header,
                      //CURLOPT_POSTFIELDS => $postfields,
                      CURLOPT_HEADER => false,
                      CURLOPT_URL => $url,
                      CURLOPT_RETURNTRANSFER => true,
                      CURLOPT_SSL_VERIFYPEER => false);

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);

    $Twitter_data = json_decode($json);

//print it out
print_r ($Twitter_data);

?>

Cela peut être exécuté à partir de la ligne de commande:

$ php <name of PHP script>.php
134
Rivers

Le code collé par Rivers est génial. Merci beaucoup! Je suis nouveau ici et je ne peux pas commenter, je voudrais juste répondre à la question de javiervd (Comment régleriez-vous le nom d'écran et qui compterait avec cette approche?), Car j'ai perdu beaucoup de temps pour le comprendre en dehors.

Vous devez ajouter les paramètres à la fois au processus URL et au processus de création de la signature. Création d'une signature est l'article qui m'a aidé. Voici mon code:

$oauth = array(
           'screen_name' => 'DwightHoward',
           'count' => 2,
           'oauth_consumer_key' => $consumer_key,
           'oauth_nonce' => time(),
           'oauth_signature_method' => 'HMAC-SHA1',
           'oauth_token' => $oauth_access_token,
           'oauth_timestamp' => time(),
           'oauth_version' => '1.0'
         );

$options = array(
             CURLOPT_HTTPHEADER => $header,
             //CURLOPT_POSTFIELDS => $postfields,
             CURLOPT_HEADER => false,
             CURLOPT_URL => $url . '?screen_name=DwightHoward&count=2',
             CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => false
           );
60
lackovic10

Comme indiqué dans d'autres réponses, créez une application Twitter pour obtenir le jeton, la clé et le secret. En utilisant le code ci-dessous, vous pouvez modifier les paramètres de requête d’un point à l’autre et éviter les fautes de frappe et autres erreurs similaires (changez le tableau $request dans la fonction returnTweet().).

function buildBaseString($baseURI, $method, $params) {
    $r = array();
    ksort($params);
    foreach($params as $key=>$value){
        $r[] = "$key=" . rawurlencode($value);
    }
    return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
}

function buildAuthorizationHeader($oauth) {
    $r = 'Authorization: OAuth ';
    $values = array();
    foreach($oauth as $key=>$value)
        $values[] = "$key=\"" . rawurlencode($value) . "\"";
    $r .= implode(', ', $values);
    return $r;
}

function returnTweet(){
    $oauth_access_token         = "x";
    $oauth_access_token_secret  = "x";
    $consumer_key               = "x";
    $consumer_secret            = "x";

    $Twitter_timeline           = "user_timeline";  //  mentions_timeline / user_timeline / home_timeline / retweets_of_me

    //  create request
        $request = array(
            'screen_name'       => 'budidino',
            'count'             => '3'
        );

    $oauth = array(
        'oauth_consumer_key'        => $consumer_key,
        'oauth_nonce'               => time(),
        'oauth_signature_method'    => 'HMAC-SHA1',
        'oauth_token'               => $oauth_access_token,
        'oauth_timestamp'           => time(),
        'oauth_version'             => '1.0'
    );

    //  merge request and oauth to one array
        $oauth = array_merge($oauth, $request);

    //  do some magic
        $base_info              = buildBaseString("https://api.Twitter.com/1.1/statuses/$Twitter_timeline.json", 'GET', $oauth);
        $composite_key          = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
        $oauth_signature            = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
        $oauth['oauth_signature']   = $oauth_signature;

    //  make request
        $header = array(buildAuthorizationHeader($oauth), 'Expect:');
        $options = array( CURLOPT_HTTPHEADER => $header,
                          CURLOPT_HEADER => false,
                          CURLOPT_URL => "https://api.Twitter.com/1.1/statuses/$Twitter_timeline.json?". http_build_query($request),
                          CURLOPT_RETURNTRANSFER => true,
                          CURLOPT_SSL_VERIFYPEER => false);

        $feed = curl_init();
        curl_setopt_array($feed, $options);
        $json = curl_exec($feed);
        curl_close($feed);

    return json_decode($json, true);
}

puis appelez simplement returnTweet()

18
budidino

Merci Kris!

Cela fonctionnait pour moi sans utiliser de paramètres à la requête, chaque fois que j'utilisais plus d'un paramètre, l'erreur était affichée: 32 Impossible de vous authentifier.

Le problème pour moi était dans l'encodage esperluette. Donc, dans votre code où c'est la ligne suivante

$url .= "?".http_build_query($query);

J'ai ajouté la ligne suivante ci-dessous:

$url=str_replace("&amp;","&",$url);

Et cela a fonctionné en utilisant deux paramètres ou plus comme screen_name et count.

Le code entier ressemble à ceci:

$token = 'YOUR TOKEN';
$token_secret = 'TOKEN SECRET';
$consumer_key = 'YOUR KEY';
$consumer_secret = 'KEY SECRET';

$Host = 'api.Twitter.com';
$method = 'GET';
$path = '/1.1/statuses/user_timeline.json'; // api call path

$query = array( // query parameters
    'screen_name' => 'twitterapi',
    'count' => '2'
);

$oauth = array(
    'oauth_consumer_key' => $consumer_key,
    'oauth_token' => $token,
    'oauth_nonce' => (string)mt_Rand(), // a stronger nonce is recommended
    'oauth_timestamp' => time(),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_version' => '1.0'
);

$oauth = array_map("rawurlencode", $oauth); // must be encoded before sorting
$query = array_map("rawurlencode", $query);

$arr = array_merge($oauth, $query); // combine the values THEN sort

asort($arr); // secondary sort (value)
ksort($arr); // primary sort (key)

// http_build_query automatically encodes, but our parameters
// are already encoded, and must be by this point, so we undo
// the encoding step
$querystring = urldecode(http_build_query($arr, '', '&'));

$url = "https://$Host$path";

// mash everything together for the text to hash
$base_string = $method."&".rawurlencode($url)."&".rawurlencode($querystring);

// same with the key
$key = rawurlencode($consumer_secret)."&".rawurlencode($token_secret);

// generate the hash
$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true)));

// this time we're using a normal GET query, and we're only encoding the query params
// (without the oauth params)
$url .= "?".http_build_query($query);
$url=str_replace("&amp;","&",$url); //Patch by @Frewuill

$oauth['oauth_signature'] = $signature; // don't want to abandon all that work!
ksort($oauth); // probably not necessary, but Twitter's demo does it

// also not necessary, but Twitter's demo does this too
function add_quotes($str) { return '"'.$str.'"'; }
$oauth = array_map("add_quotes", $oauth);

// this is the full value of the Authorization line
$auth = "OAuth " . urldecode(http_build_query($oauth, '', ', '));

// if you're doing post, you need to skip the GET building above
// and instead supply query parameters to CURLOPT_POSTFIELDS
$options = array( CURLOPT_HTTPHEADER => array("Authorization: $auth"),
                  //CURLOPT_POSTFIELDS => $postfields,
                  CURLOPT_HEADER => false,
                  CURLOPT_URL => $url,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_SSL_VERIFYPEER => false);

// do our business
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);

$Twitter_data = json_decode($json);

J'espère que ça aide quelqu'un qui a le même problème que moi.

16
Frewuill

Cette question m'a beaucoup aidé mais ne m'a pas permis de comprendre ce qui devait se passer. Cet article de blog a fait un travail extraordinaire en me le guidant.

Voici les bits importants tous réunis au même endroit:

  • Comme indiqué ci-dessus, vous DEVEZ signer vos demandes d'API 1.1. Si vous voulez obtenir des statuts publics, vous souhaiterez une clé d'application plutôt qu'une clé d'utilisateur. Le lien complet vers la page souhaitée est le suivant: https://dev.Twitter.com/apps
  • Vous devez hacher TOUS les paramètres, les paramètres oauth ET LES paramètres get (ou les paramètres POST).
  • Vous devez TRIER les paramètres avant de les réduire à la forme encodée en url qui est hachée.
  • Vous devez coder certaines choses plusieurs fois - par exemple, vous créez une chaîne de requête à partir des valeurs encodées dans l'URL des paramètres, puis vous codez l'URL et concaténez avec le type de méthode et l'URL.

Je sympathise avec tous les maux de tête, alors voici un code pour envelopper le tout:

$token = 'YOUR TOKEN';
$token_secret = 'TOKEN SECRET';
$consumer_key = 'YOUR KEY';
$consumer_secret = 'KEY SECRET';

$Host = 'api.Twitter.com';
$method = 'GET';
$path = '/1.1/statuses/user_timeline.json'; // api call path

$query = array( // query parameters
    'screen_name' => 'twitterapi',
    'count' => '2'
);

$oauth = array(
    'oauth_consumer_key' => $consumer_key,
    'oauth_token' => $token,
    'oauth_nonce' => (string)mt_Rand(), // a stronger nonce is recommended
    'oauth_timestamp' => time(),
    'oauth_signature_method' => 'HMAC-SHA1',
    'oauth_version' => '1.0'
);

$oauth = array_map("rawurlencode", $oauth); // must be encoded before sorting
$query = array_map("rawurlencode", $query);

$arr = array_merge($oauth, $query); // combine the values THEN sort

asort($arr); // secondary sort (value)
ksort($arr); // primary sort (key)

// http_build_query automatically encodes, but our parameters
// are already encoded, and must be by this point, so we undo
// the encoding step
$querystring = urldecode(http_build_query($arr, '', '&'));

$url = "https://$Host$path";

// mash everything together for the text to hash
$base_string = $method."&".rawurlencode($url)."&".rawurlencode($querystring);

// same with the key
$key = rawurlencode($consumer_secret)."&".rawurlencode($token_secret);

// generate the hash
$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true)));

// this time we're using a normal GET query, and we're only encoding the query params
// (without the oauth params)
$url .= "?".http_build_query($query);

$oauth['oauth_signature'] = $signature; // don't want to abandon all that work!
ksort($oauth); // probably not necessary, but Twitter's demo does it

// also not necessary, but Twitter's demo does this too
function add_quotes($str) { return '"'.$str.'"'; }
$oauth = array_map("add_quotes", $oauth);

// this is the full value of the Authorization line
$auth = "OAuth " . urldecode(http_build_query($oauth, '', ', '));

// if you're doing post, you need to skip the GET building above
// and instead supply query parameters to CURLOPT_POSTFIELDS
$options = array( CURLOPT_HTTPHEADER => array("Authorization: $auth"),
                  //CURLOPT_POSTFIELDS => $postfields,
                  CURLOPT_HEADER => false,
                  CURLOPT_URL => $url,
                  CURLOPT_RETURNTRANSFER => true,
                  CURLOPT_SSL_VERIFYPEER => false);

// do our business
$feed = curl_init();
curl_setopt_array($feed, $options);
$json = curl_exec($feed);
curl_close($feed);

$Twitter_data = json_decode($json);
9
Kris Reeves

Si vous avez installé la bibliothèque OAuth PHP, vous n'avez pas à vous soucier de former vous-même la requête.

$oauth = new OAuth($consumer_key, $consumer_secret, OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);
$oauth->setToken($access_token, $access_secret);

$oauth->fetch("https://api.Twitter.com/1.1/statuses/user_timeline.json");
$Twitter_data = json_decode($oauth->getLastResponse());

print_r($Twitter_data);

Pour plus d'informations, consultez le docs ou leur exemple . Vous pouvez utiliser pecl install oauth pour obtenir la bibliothèque.

6
jeffaudio

Tout d'abord, je voulais remercier jimbo et ( son post /Twitter-api-php simple library).

Si vous allez utiliser la bibliothèque API GET search/tweets avec la bibliothèque "Twitter-api-php" PHP (TwitterAPIExchange.php):

Tout d'abord, vous devez simplement commenter "Exécuter une demande POST et faire écho à la réponse".

Utilisez simplement le code "Effectuer une requête GET et renvoyer la réponse", renvoyer la réponse et modifier ces deux lignes:

$url = 'https://api.Twitter.com/1.1/followers/ids.json';
$getfield = '?screen_name=J7mbo';

à

$url = 'https://api.Twitter.com/1.1/search/tweets.json';
$getfield = '?q=J7mbo';

(Remplacez screen_name par q, c'est tout :)

5
Chanuka Asanka

Vous aurez besoin d'un à créer une "application" sur Twitter (et vous avez besoin d'un compte Twitter pour le faire).

Ensuite, vous devez tilisez OAuth pour envoyer une demande autorisée à Twitter .

Vous pouvez utiliser la ressource GET statuses/user_timeline pour obtenir la liste des tweets récents.

2
Matthew Rapati

Voici une brève pour obtenir un nombre spécifié de tweets à partir de votre chronologie. Il fait fondamentalement la même chose que les autres exemples, mais avec moins de code.

Il suffit de remplir les clés et d’ajuster $count à votre guise:

$url = 'https://api.Twitter.com/1.1/statuses/user_timeline.json';
$count = '10';

$oauth = array('count' => $count,
               'oauth_consumer_key' => '[CONSUMER KEY]',
               'oauth_nonce' => md5(mt_Rand()),
               'oauth_signature_method' => 'HMAC-SHA1',
               'oauth_timestamp' => time(),
               'oauth_token' => '[ACCESS TOKEN]',
               'oauth_version' => '1.0');

$oauth['oauth_signature'] = base64_encode(hash_hmac('sha1', 'GET&' . rawurlencode($url) . '&' . rawurlencode(implode('&', array_map(function ($v, $k) { return $k . '=' . $v; }, $oauth, array_keys($oauth)))), '[CONSUMER SECRET]&[ACCESS TOKEN SECRET]', true));

$twitterData = json_decode(file_get_contents($url . '?count=' . $count, false, stream_context_create(array('http' => array('method' => 'GET',
                                                                                                                           'header' => 'Authorization: OAuth ' 
                                                                                                                                       . implode(', ', array_map(function ($v, $k) { return $k . '="' . rawurlencode($v) . '"'; }, $oauth, array_keys($oauth))))))));

Celui-ci utilise des fonctions anonymes et file_get_contents à la place de la bibliothèque cURL. Notez l'utilisation d'un nonce MD5 haché. Tout le monde semble suivre le time() nonce, cependant, la plupart des exemples sur le Web concernant OAuth utilisent une sorte de chaîne cryptée (comme celle-ci: http: // www .sitepoint.com/arrangement-oauth-1 / ). Cela a plus de sens pour moi aussi.

Remarque complémentaire: vous avez besoin de PHP 5.3+ pour les fonctions anonymes (si votre serveur/ordinateur est dans une caverne de la guerre froide et vous ne pouvez pas le mettre à jour).

0
kasimir