En raison du retrait de l'API Twitter 1.0 à partir du 11 juin 2013 , 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 la user_timeline (statuts 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 y a beaucoup de classes, mais après 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 pour obtenir les statuts utilisateur récents avec PHP?
Réponses:
Vous souhaitez donc utiliser l'API Twitter v1.1?
Remarque: les fichiers pour ceux-ci sont sur GitHub .
La version 1.0 sera bientôt obsolète et les demandes non autorisées ne seront pas autorisées. Alors, voici un article pour vous aider à faire exactement cela, avec une classe PHP pour vous faciliter la vie.
Vous devez visiter le site officiel des développeurs Twitter et créer un compte développeur. Il s'agit d'une étape gratuite et nécessaire pour faire des demandes pour l'API v1.1.
Quoi? Vous pensiez pouvoir faire des demandes 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".
Sur cette page, remplissez les détails que vous souhaitez. Pour moi, cela n'avait pas d'importance, parce que 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 jeu de clés. Ceux-ci sont:
Il y a un peu d'informations ici sur la raison d'être de ces jetons.
OAuth demande quelques jetons. Vous devez donc les générer pour vous.
Cliquez sur "créer mon jeton d'accès" en bas. Ensuite, une fois que vous faites défiler vers le bas à nouveau, vous aurez des 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 API, alors notez-les quelque part.
Si vous souhaitez utiliser décemment cette API, vous devrez modifier vos paramètres en lecture et écriture si vous faites autre chose que la récupération de données standard à l'aide de requêtes GET .
Choisissez l'onglet "Paramètres" en haut de la page.
Donnez à votre application un accès en lecture / écriture et appuyez sur "Mettre à jour" en bas.
Vous pouvez en savoir plus sur le modèle d'autorisation des applications que Twitter utilise ici.
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 demandes dont vous avez besoin.
Cela utilise OAuth et l' API Twitter v1.1 , et la classe que j'ai créée que vous pouvez trouver ci-dessous.
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 sa documentation API pour vous aider à choisir quelle URL et aussi le type de demande (POST ou GET).
Dans la documentation, chaque URL indique ce que vous pouvez lui transmettre. Si nous utilisons l'URL "blocs" comme celle ci-dessus, je peux passer les paramètres POST suivants:
Maintenant que vous avez configuré ce que vous voulez faire avec l'API, il est temps de faire la demande réelle.
Et pour une demande POST , c'est tout!
Pour une demande GET , c'est un peu différent. Voici un exemple:
Exemple de code final : pour une simple demande GET pour une liste de mes followers.
J'ai mis ces fichiers sur GitHub avec crédit à @ laquovic10 et @rivers! J'espère que quelqu'un le trouve utile; Je sais que je l'ai fait (je l'ai utilisé pour le blocage en bloc dans une boucle).
la source
php.ini
fichier et vous devez également charger les certificats CA dans votrephp.ini
fichier à l'aide decurl.cainfo = path\to\cacert.pem
. Vous pouvez obtenir les certificats CA ici .Accédez à 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 .
Cela peut être exécuté à partir de la ligne de commande:
la source
screen_name
etcount
avec cette approche? J'ai essayé de l'ajouter à la$url
variable mais j'ai eu une erreur "Impossible de vous authentifier".curl_init()
Cependant, mon code ne semble pas revenir . J'ai regardé quelques exemples et ils ont l'air très simples et directs et exactement comme ce code ici ... Dois-je installer quelque chose de spécial?Le code collé par Rivers est super. Merci beaucoup! Je suis nouveau ici et je ne peux pas commenter, je voudrais juste répondre à la question de javiervd (Comment définiriez-vous le nom d'écran et compter avec cette approche?), Car j'ai perdu beaucoup de temps pour le comprendre en dehors.
Vous devez ajouter les paramètres à la fois à l' URL et au processus de création de signature. Créer une signature est l'article qui m'a aidé. Voici mon code:
la source
buildAuthorizationHeader
fonction? Je l'ai implémenté séparément.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 la demande d'un endroit et éviter les fautes de frappe et les erreurs similaires (changer le
$request
tableau dans lareturnTweet()
fonction).puis appelez
returnTweet()
la source
functions.php
fichier dans WordPress, mis<?php echo returnTweet(); ?>
dans un fichier HTML, et il sort le mot "Array" et rien d'autre.Merci Kris!
Cela a fonctionné pour moi sans utiliser de paramètres dans la requête, chaque fois que j'utilisais plus d'un paramètre, cela me montrait l'erreur: 32 Impossible de vous authentifier.
Le problème pour moi était dans le codage esperluette. Donc dans votre code où c'est la ligne suivante
J'ai ajouté la ligne suivante ci-dessous:
Et cela a fonctionné en utilisant deux ou plusieurs paramètres comme nom_écran et nombre.
Le code entier ressemble à ceci:
J'espère que cela aide quelqu'un avec le même problème que moi.
la source
Cette question m'a beaucoup aidé mais ne m'a pas permis de comprendre ce qui doit arriver. Ce billet de blog a fait un travail incroyable pour me guider à travers cela.
Voici les bits importants en un seul endroit:
Je sympathise avec tous les maux de tête, alors voici du code pour tout résumer:
la source
Si la bibliothèque PHP OAuth est installée, vous n'avez pas à vous soucier de former la demande vous-même.
Pour plus d'informations, consultez la documentation ou leur exemple . Vous pouvez utiliser
pecl install oauth
pour obtenir la bibliothèque.la source
Tout d'abord, je voulais remercier jimbo et ( sa bibliothèque simple post / twitter-api-php).
Si vous allez utiliser l' API GET search / tweets avec la bibliothèque PHP "twitter-api-php" (TwitterAPIExchange.php):
Tout d'abord, il vous suffit de commenter la zone de code "Effectuer une requête POST et faire écho à la réponse".
Utilisez simplement le code "Effectuer une requête GET et faire écho à la réponse" et faire écho à la réponse et modifier ces deux lignes:
à
(Changez
screen_name
enq
, c'est tout :)la source
Vous aurez besoin d'un pour créer une "application" sur Twitter (et vous avez besoin d'un compte Twitter pour ce faire).
Ensuite, vous devez utiliser OAuth pour faire une demande autorisée à Twitter .
Vous pouvez utiliser la ressource GET statuses / user_timeline pour obtenir une liste des tweets récents.
la source
HttpRequest()
fonction PHP pour l'étape 2? Il y a la bibliothèque TwitterOAuth PHP d'Abraham - github.com/abraham/twitteroauth - qui est censée faire cela également, mais un exemple de la façon de l'implémenter n'est pas vraiment fourni.Voici une brève pour obtenir un nombre spécifié de tweets de votre chronologie. Il fait essentiellement la même chose que les autres exemples, mais avec moins de code.
Remplissez simplement les touches et ajustez
$count
à votre guise:Celui-ci utilise des fonctions anonymes et
file_get_contents
au lieu de la bibliothèque cURL. Notez l'utilisation d'un nonce haché MD5. Tout le monde sembletime()
accepter le 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/understanding-oauth-1/ ). Cela a plus de sens pour moi aussi.Remarque supplémentaire: vous avez besoin de PHP 5.3+ pour les fonctions anonymes (au cas où votre serveur / ordinateur se trouve dans une grotte de la guerre froide et que vous ne pouvez pas le mettre à niveau).
la source
A partir de leur générateur de signature , vous pouvez générer des
curl
commandes de la forme:la source
la source
Merci à ce fil, et surtout budidino parce que son code est ce qui l'a ramené chez moi. Je voulais juste contribuer à la façon de récupérer les données JSON d'une demande. Apportez des modifications à la partie "// create request" du tableau de requêtes du code pour effectuer différentes requêtes. En fin de compte, cela produira le JSON sur l'écran du navigateur
la source
Si c'est utile pour n'importe qui ... Dans mon blog, j'ai implémenté le code PHP suivant afin de récupérer les derniers tweets, d'extraire leurs données les plus pertinentes puis de les enregistrer dans une base de données MySQL. Cela fonctionne parce que je l'ai dans mon blog.
La table "tweets" où les stocker:
get_tweets.php:
La fonction pour enregistrer les tweets:
la source