Aufgrund des Ausscheidens von Twitter API 1.0 zum 11. Juni 2013 funktioniert das folgende Skript nicht mehr.
// 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);
}
}
Wie kann ich die user_timeline (aktuelle Status) mit dem geringstmöglichen Code abrufen?
Ich habe Folgendes gefunden: https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline, aber ich erhalte die folgende Fehlermeldung:
"{"errors":[{"message":"Could not authenticate you","code":32}]}"
Es gibt viele Klassen da draußen, aber nachdem ich einige ausprobiert habe, scheint keine von ihnen aufgrund dieser Updates bei Twitter zu funktionieren, und einige von ihnen sind ziemlich fortgeschrittene Klassen mit vielen Funktionen, die ich nicht wirklich brauche.
Was ist der einfachste / kürzeste Weg, um die neuesten Benutzerstatus mit PHP zu erhalten?
Antworten:
Sie möchten also die Twitter v1.1-API verwenden?
Hinweis: Die Dateien für diese befinden sich auf GitHub .
Version 1.0 wird bald veraltet sein und nicht autorisierte Anfragen werden nicht zugelassen. Hier ist ein Beitrag, der Ihnen dabei hilft, zusammen mit einer PHP-Klasse, die Ihnen das Leben erleichtert.
Sie müssen die offizielle Twitter-Entwicklerseite besuchen und sich für ein Entwicklerkonto registrieren. Dies ist ein kostenloser und notwendiger Schritt, um Anforderungen für die v1.1-API zu stellen.
Was? Sie dachten, Sie könnten nicht authentifizierte Anfragen stellen? Nicht mit der v1.1-API von Twitter. Sie müssen http://dev.twitter.com/apps besuchen und auf die Schaltfläche "Anwendung erstellen" klicken.
Geben Sie auf dieser Seite die gewünschten Details ein. Für mich war das egal, weil ich nur eine Menge Blockanfragen stellen wollte, um Spam-Follower loszuwerden. Der Punkt ist, dass Sie sich einen Satz eindeutiger Schlüssel besorgen, die Sie für Ihre Anwendung verwenden können.
Beim Erstellen einer Anwendung müssen Sie sich (und Twitter) einen Schlüsselbund geben. Diese sind:
Es gibt ein wenig Informationen hier auf das, was diese Tokens für.
OAuth fordert einige Token an. Sie müssen sie also für Sie generieren lassen.
Klicken Sie unten auf "Mein Zugriffstoken erstellen". Sobald Sie wieder nach unten scrollen, haben Sie einige neu generierte Schlüssel. Sie müssen die vier zuvor beschrifteten Schlüssel von dieser Seite für Ihre API-Aufrufe abrufen, notieren Sie sie sich also irgendwo.
Wenn Sie diese API angemessen nutzen möchten, müssen Sie Ihre Einstellungen in Lesen und Schreiben ändern, wenn Sie etwas anderes als das Standard-Datenabrufen mit GET- Anforderungen durchführen.
Wählen Sie die Registerkarte "Einstellungen" oben auf der Seite.
Geben Sie Ihrer Anwendung Lese- / Schreibzugriff und klicken Sie unten auf "Aktualisieren".
Sie können mehr über die Anwendungen Berechtigungsmodell lesen , dass Twitter hier verwendet.
Ich habe den obigen Code mit einigen Modifikationen und Änderungen zu einer PHP-Klasse kombiniert, damit es wirklich einfach ist, die gewünschten Anforderungen zu stellen.
Dies verwendet OAuth und die Twitter v1.1-API sowie die von mir erstellte Klasse, die Sie unten finden.
Stellen Sie sicher, dass Sie die Schlüssel, die Sie von Ihrer Anwendung oben erhalten haben, in die entsprechenden Felder einfügen.
Als nächstes müssen Sie eine URL auswählen, an die Sie eine Anfrage stellen möchten. Die API-Dokumentation von Twitter hilft Ihnen bei der Auswahl der URL und des Anforderungstyps (POST oder GET).
In der Dokumentation gibt jede URL an, was Sie an sie übergeben können. Wenn wir die URL "Blöcke" wie oben verwenden, kann ich die folgenden POST-Parameter übergeben:
Nachdem Sie festgelegt haben, was Sie mit der API tun möchten, ist es Zeit, die eigentliche Anfrage zu stellen.
Und für eine POST- Anfrage ist es das!
Bei einer GET- Anfrage ist das etwas anders. Hier ist ein Beispiel:
Letztes Codebeispiel : Für eine einfache GET-Anfrage nach einer Liste meiner Follower.
Ich habe diese Dateien auf GitHub mit Kredit an @ lackovic10 und @rivers gestellt! Ich hoffe, jemand findet es nützlich; Ich weiß, dass ich es getan habe (ich habe es zum Blockieren von Massen in einer Schleife verwendet).
quelle
php.ini
Datei geladen haben und die CA-Zertifikate in Ihrephp.ini
Datei mit ladencurl.cainfo = path\to\cacert.pem
. Die CA-Zertifikate erhalten Sie hier .Gehen Sie zu dev.twitter.com und erstellen Sie eine Anwendung . Dadurch erhalten Sie die erforderlichen Anmeldeinformationen. Hier ist eine Implementierung, die ich kürzlich mit PHP und cURL geschrieben habe .
Dies kann über die Befehlszeile ausgeführt werden:
quelle
screen_name
undcount
mit diesem Ansatz einstellen ? Ich habe versucht, es der$url
Variablen hinzuzufügen, aber ich habe den Fehler "Sie konnten nicht authentifiziert werden" erhalten.curl_init()
. Ich habe mir einige Beispiele angesehen und sie sehen sehr einfach und unkompliziert aus und genau wie dieser Code hier ... Muss ich etwas Besonderes installieren?Der von Rivers eingefügte Code ist großartig. Vielen Dank! Ich bin neu hier und kann keinen Kommentar abgeben. Ich möchte nur die Frage von javiervd beantworten (Wie würden Sie den Bildschirmnamen festlegen und mit diesem Ansatz zählen?), Da ich viel Zeit verloren habe, um ihn herauszufinden aus.
Sie müssen die Parameter sowohl zur URL als auch zum Signaturerstellungsprozess hinzufügen . Das Erstellen einer Signatur ist der Artikel, der mir geholfen hat. Hier ist mein Code:
quelle
buildAuthorizationHeader
Funktion? Ich habe es separat implementiert.Erstellen Sie, wie in anderen Antworten angegeben, eine Twitter-App, um Token, Schlüssel und Geheimnis zu erhalten. Mit dem folgenden Code können Sie Anforderungsparameter von einer Stelle aus ändern und Tippfehler und ähnliche Fehler vermeiden (
$request
Array inreturnTweet()
Funktion ändern ).und dann einfach anrufen
returnTweet()
quelle
functions.php
Datei in WordPress hinzugefügt ,<?php echo returnTweet(); ?>
eine HTML-Datei eingefügt und das Wort "Array" und sonst nichts ausgegeben.Danke Kris!
Es hat bei mir funktioniert, ohne Parameter für die Abfrage zu verwenden. Wenn ich mehr als einen Parameter verwendet habe, wurde mir der Fehler angezeigt: 32 Sie konnten nicht authentifiziert werden.
Das Problem für mich war die kaufmännische Und-Kodierung. Also in Ihrem Code, wo es die folgende Zeile ist
Ich habe die folgende Zeile hinzugefügt:
Und es funktionierte mit zwei oder mehr Parametern wie screen_name und count.
Der gesamte Code sieht folgendermaßen aus:
Hoffe, es hilft jemandem mit dem gleichen Problem, das ich hatte.
quelle
Diese Frage hat mir sehr geholfen, aber nicht ganz verstanden, was passieren muss. Dieser Blog-Beitrag hat großartige Arbeit geleistet und mich durch den Blog geführt .
Hier sind die wichtigen Punkte an einem Ort:
Ich sympathisiere mit all den Kopfschmerzen, also hier ein Code, um alles zusammenzufassen:
quelle
Wenn Sie die OAuth PHP-Bibliothek installiert haben, müssen Sie sich nicht darum kümmern, die Anforderung selbst zu erstellen.
Weitere Informationen finden Sie unter Die Dokumente oder deren Beispiel . Sie können verwenden
pecl install oauth
, um die Bibliothek zu erhalten.quelle
Zunächst wollte ich mich bei jimbo und ( seiner einfachen Bibliothek post / twitter-api-php) bedanken .
Wenn Sie die GET-Such- / Tweets-API mit der PHP-Bibliothek "twitter-api-php" (TwitterAPIExchange.php) verwenden möchten:
Zuerst müssen Sie nur den Codebereich "POST-Anforderung ausführen und Antwort wiederholen" kommentieren.
Verwenden Sie einfach den Code "GET-Anforderung ausführen und die Antwort wiederholen" und geben Sie die Antwort wieder und ändern Sie diese beiden Zeilen:
zu
(Wechseln
screen_name
zuq
, das war's :)quelle
Sie benötigen eine, um eine "App" auf Twitter zu erstellen (und Sie benötigen dazu ein Twitter-Konto).
Anschließend müssen Sie OAuth verwenden, um eine autorisierte Anfrage an Twitter zu stellen .
Sie können die Ressource GET statuses / user_timeline verwenden , um eine Liste der letzten Tweets abzurufen .
quelle
HttpRequest()
Funktion für Schritt 2? Es gibt Abrahams TwitterOAuth PHP - github.com/abraham/twitteroauth - Bibliothek, die dies ebenfalls tun soll, aber ein Beispiel für die Implementierung wird nicht wirklich bereitgestellt.Hier ist eine kurze Beschreibung zum Abrufen einer bestimmten Anzahl von Tweets aus Ihrer Timeline. Es macht im Grunde das Gleiche wie die anderen Beispiele, nur mit weniger Code.
Füllen Sie einfach die Tasten aus und passen Sie
$count
sie Ihren Wünschen an:Dieser verwendet anonyme Funktionen und
file_get_contents
anstelle der cURL-Bibliothek. Beachten Sie die Verwendung eines MD5-Hash-Nonce. Jeder scheint demtime()
Nonce zuzustimmen, jedoch verwenden die meisten Beispiele im Internet in Bezug auf OAuth eine Art verschlüsselten String (wie diesen: http://www.sitepoint.com/understanding-oauth-1/ ). Das macht auch für mich mehr Sinn.Weiterer Hinweis: Sie benötigen PHP 5.3+ für die anonymen Funktionen (falls sich Ihr Server / Computer in einer Höhle des Kalten Krieges befindet und Sie ihn nicht aktualisieren können).
quelle
Über ihren Signaturgenerator können Sie
curl
Befehle der folgenden Form generieren :quelle
quelle
Dank diesem Thread und besonders Budidino, weil sein Code es für mich nach Hause gebracht hat. Ich wollte nur dazu beitragen, wie die JSON-Daten aus einer Anfrage abgerufen werden. Nehmen Sie Änderungen am Anforderungsarray "// Anforderung erstellen" des Codes vor, um verschiedene Anforderungen auszuführen. Letztendlich wird der JSON auf dem Browserbildschirm ausgegeben
quelle
Wenn es für jemanden nützlich ist ... In meinem Blog habe ich den folgenden PHP-Code implementiert, um die letzten Tweets abzurufen, ihre relevantesten Daten zu extrahieren und sie dann in einer MySQL-Datenbank zu speichern. Es funktioniert, weil ich es in meinem Blog habe.
Die "Tweets" -Tabelle, in der sie gespeichert sind:
get_tweets.php:
Die Funktion zum Speichern der Tweets:
quelle