Der folgende Code funktioniert mit der Twitter API-Aktualisierung auf 1.1 seit dem 11.06.2013 nicht mehr wie vorgesehen. Die API 1.1 erfordert oAuth, was eine serverseitige Komponente voraussetzt. Hier ist eine PHP-Methode, um mit der neuen API zu interagieren. Wenn Sie googeln, finden Sie viele andere Bibliotheken und Ähnliches. Es gibt eine reine JavaScript-Methode zum Abrufen von Tweets, aber das könnte ein Schlupfloch sein, auf das Sie sich nicht verlassen möchten.
<?php
function getTwitterStatus($userid){
$url = "https://api.twitter.com/1/statuses/user_timeline/$userid.xml?count=1&include_rts=1callback=?";
$xml = simplexml_load_file($url) or die("could not connect");
foreach($xml->status as $status){
$text = $status->text;
}
echo $text;
}
// USAGE
getTwitterStatus("chriscoyier");
?>
Ich erhalte nur die Fehlermeldung "Could not Connect". Der Code scheint nicht zu funktionieren.
Der Code funktioniert. Es gibt ein paar Gründe, warum Sie "Could no Connect" erhalten könnten, die mir einfallen:
1. Ihre PHP-Installation unterstützt simple_xml nicht.
2. Ihr Server kann keine Verbindung zu einer externen Website herstellen.
Das erste Szenario ist wahrscheinlich wahrscheinlicher.
Kann nur das Letzte empfangen, das Mehrere kann nicht erscheinen
Ein weiterer Grund, warum der Code möglicherweise nicht richtig funktioniert, ist, dass das Twitter-Konto, das zum Abrufen des Status-Updates verwendet wird, "gesperrt" (private Konten) sein kann.
Sie sollten es auf den öffentlichen Status-Update einstellen ;)
Danke für dieses Snippet, es funktioniert perfekt für mich!
Ich würde davon abraten, das XML-Format zu verwenden, zumindest vorerst. Es scheint, dass Retweets in den XML- und JSON-Feeds nicht enthalten sind. Das wäre nicht so schlimm, außer dass es nicht nur einen Retweet überspringt – es gibt einen leeren Tweet zurück!
Um dies zu umgehen, verwende ich das RSS-Format. Das bringt seine eigenen einzigartigen Herausforderungen und eine andere XML-Struktur mit sich, aber zumindest werden diese Retweets zurückgegeben.
Mehr Info
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-user_timeline
Wie würden Sie es ändern, um die letzten X Tweets anstelle von nur 1 anzuzeigen?
in
$urlanstelle von 1 incountverwenden Sie 'x', wobei 'x' die Anzahl der Tweets definiert.Ich habe den obigen Code implementiert, aber die Links in meinen Tweets sind nicht aktiv, obwohl sie auf meiner Twitter-Seite aktiv sind. Haben Sie Gedanken dazu?
Ich weiß, dass Sie fast durchgedreht sind, als Sie versucht haben, diesen Code zu veröffentlichen, aber im Erinnerungsbereich direkt neben diesem Kommentarformular steht alles, was Sie wissen müssen.
Danke für den Code, funktioniert perfekt!
Ich habe den Code verwendet, er funktioniert für mich, aber ich kann das Datum der Tweets nicht abrufen. Können Sie mir helfen, das Tweet-Datum zu erhalten?
Funktioniert dieser Code nicht :( ..
Ich bin mir nicht sicher, ob dies gepostet wurde, ich habe einen kleinen Fehler in Ihrer foreach-Schleife gefunden.
Wenn Sie ?count=5 (oder etwas anderes als eins) setzen, geben Sie nur den 5. neuesten Tweet aus, den Sie gemacht haben. Wenn das das ist, was Sie wollen, großartig, aber wenn Sie die 5 neuesten Tweets anzeigen möchten, müssen Sie die "echo $text;" innerhalb der foreach-Schleife einfügen.
in der $url, ändern Sie ?count=1 zu ?count=5 oder etwas anderes als eins.
Nun, es hat zuerst perfekt funktioniert, und dann, nach dem Aktualisieren der Seite, gab es eine Fehlermeldung "could not connect to server". Ich frage mich, warum es anfangs funktionierte?
großartig, danke Chris.
Beide Versionen funktionieren bei mir hervorragend, jetzt muss ich sie nur noch gestalten und auf meiner Homepage für meine Benutzer einfügen. Danke!
Ich habe es, alles funktioniert einfach gut :) thx Chris
Es funktioniert bei mir nur intermittierend. Es werden alle einwandfrei angezeigt und dann, einen Moment später, stoppt es und ich erhalte die Fehlermeldung "Could not Connect".
Irgendwelche Ideen?
Ich hatte Probleme, es zum Laufen zu bringen, und mir wurde klar, dass
$text = $status->text;
müsste sein
$text .= $status->text;
Andernfalls wird der Code nur einen ausgeben.
Gute Tricks!
Ich habe einige Änderungen am Skript vorgenommen. Ich hoffe, das hilft jemandem! :) `
Ich konnte das nicht zum Laufen bringen. Ich habe diese URL verwendet und es hat funktioniert
$url = “http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=$userid&count=1”;
Ich habe den Code von @Walter verwendet, er funktioniert für mich, aber ich kann das Datum der Tweets nicht abrufen. Kann mir jemand helfen, das Tweet-Datum zu erhalten?
Ich arbeite mit einer Drupal-Installation und versuche, OAuth und die aktuelle Iteration des Twitter-Moduls zu vermeiden und stattdessen diesen Code zu verwenden. Leider ist die Fehlermeldung "Could not connect" für mich seitenlahm. Sie zeigt mir einen weißen Bildschirm und sperrt mich komplett vom Zugriff auf meine Website aus, bis die Fehlermeldung endlich (zufällig) aufhört und der Code wieder funktioniert. Gibt es eine Möglichkeit, dieses Verhalten zu stoppen, oder ein Code-Schnipsel, das für meine Bedürfnisse "besser" funktionieren könnte? Jede Hilfe wird geschätzt. Danke!
Ich habe ein kleines Detail in Walters Code geändert, weil griechische Zeichen bei mir wie Fragezeichen aussahen.
Also ersetzte ich utf8_decode($text) durch html_entity_decode($text) und jetzt sind meine griechischen Zeichen perfekt!
<?php
function getLastXTwitterStatus($userid,$x){
$url = "http://twitter.com/statuses/user_timeline/$userid.xml?count=$x";
$xml = simplexml_load_file($url) or die('could not connect');
echo '<ul>';
foreach($xml->status as $status){
$text = twitterify( $status->text );
echo '<li>'.utf8_decode($text).'</li>';
}
echo '</ul>';
}
function twitterify($ret) {
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\" >\\2</a>", $ret);
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\" >\\2</a>", $ret);
$ret = preg_replace("/@(\w+)/", "<a href=\"http://www.twitter.com/\\1\" >@\\1</a>", $ret);
$ret = preg_replace("/#(\w+)/", "<a href=\"http://search.twitter.com/search?q=\\1\" >#\\1</a>", $ret);
return $ret;
}
//mein Benutzer-ID kenrick1991
getLastXTwitterStatus('kenrick1991',5);
?>
Ich habe mir verschiedene Möglichkeiten angesehen, Twitter in PHP einzubetten, und dies ist mit Abstand die beste und einfachste, die ich bisher gesehen habe.
Gibt es eine Möglichkeit, Hashtags einzubetten, wie über die Twitter-Suche, anstatt über eine Benutzer-ID? Das wäre großartig für Veranstaltungen!
Wie kann ich meinen Tweet cachen, da meine Seite langsamer zu laden scheint als normal?
Weiß jemand, wie ich mit PHP die StatusCount von einem Twitter-Konto abrufen und dann auf einer Webseite als einfachen Text zurückgeben kann, um ihn mit CSS zu formatieren? Ich zeige derzeit die 5 neuesten Tweets an und darunter einen Link "mehr Tweets anzeigen", der zum Twitter-Konto führt, aber ich möchte gerne sagen: "mehr Tweets anzeigen, wir haben x verfügbar zum Lesen". Wobei x die Anzahl ist, die über PHP zurückgegeben wird. Kann mir jemand helfen? Ich dachte, es wäre leicht zu finden, aber nach zwei Stunden Suche habe ich nicht herausgefunden, wie es geht. Danke T
Toller Thread! Ich habe den Code von @walter für eine kürzliche Theme-Erstellung verwendet und um die $userid durch einen vom Theme-Benutzer eingegebenen Namen zu ersetzen, habe ich einfach eine Variable oben hinzugefügt und den Benutzernamen im Funktionsaufruf unten ersetzt.
Gut für eine WordPress-Theme-Erstellung.
Gibt es eine Möglichkeit, Walters Code zu verwenden, aber @replies auszuschließen?
Gibt es IRGENDEINE Möglichkeit, mehrere Tweets anzuzeigen, aber nur einen nach dem anderen? Oder sie sogar alle in einer einzigen Zeile mit etwas wie einem Haufen Strichen dazwischen anzuzeigen? Ich versuche, ein scrollendes Ticker zu erstellen..
Ich habe es tatsächlich herausgefunden! PHP ist cool.
Klicken Sie einfach auf diesen Link
https://twitter.com/statuses/user_timeline/ranasaani.json
Sie erhalten das Json-Objekt.
@usman Das ist der einfachste Weg, den ich gesehen habe, danke..
Ich rufe den neuesten Tweet mit count=1 ab.
Aber wenn ich den neuesten Tweet lösche, gibt Twitter leer zurück. Ich benutze das XML/JSON-Format.
Vielen Dank für das einfache und großartige Skript :)
Ich habe hier auf dieser Seite eine Klasse gefunden http://www.thetutlage.com/post=TUT177
Scheint mir vielversprechend..
Wie macht man Links im Tweet hyperverknüpft?
Ich habe es zum Laufen gebracht, aber der Link ist Text und kein Link.
danke
Es funktionierte bis gestern, aber heute, als ich es überprüfte, gibt es die Meldung "could not connect" für meine Website http://ankurgupta.com/ und wegen dieses Fehlers wird auch die gesamte Seite nicht geladen :(
Wenn der letzte Tweet des Benutzers ein "Retweet" ist, erhalten Sie null Ergebnisse, ein leeres Array. Oder wenn die Anzahl auf 3 gesetzt ist und die neuesten 3 Tweets des Benutzers alle Retweets sind, erhalten Sie ebenfalls ein leeres Array als Ergebnis, das gleiche Szenario.
Um dies zu erreichen, müssen Sie die neuere Version der API und den Parameter include_rts=true mit count=1 verwenden. Ihr Link sollte also so aussehen:
https://api.twitter.com/1/statuses/user_timeline/$userid.xml?count=1&include_rts=1
Hier ist mein sehr aktueller neuester Tweet (auch wenn es ein Retweet ist)
https://api.twitter.com/1/statuses/user_timeline/f000k.xml?count=1&include_rts=1
Übrigens, warum verwenden Sie nicht JSON statt XML?
großartig! hat bei mir funktioniert.. vielen Dank… Gott segne dich.
Hallo! Ich schwöre, ich war schon einmal auf dieser Seite, aber nach der Überprüfung einiger Beiträge habe ich festgestellt, dass sie neu ist
für mich. Wie auch immer, ich bin definitiv begeistert, dass ich sie gefunden habe und werde sie als Lesezeichen markieren und oft zurückkehren!
Es funktioniert absolut, aber eine "Linkify"-Option für den Status hätte wohl mehr Leuten gefallen.
Wie auch immer, wie einer der Johns oben sagte, ist dies die einfachste Lösung, die ich kenne. Danke!
Michael Shur, dieses intermittierende "could not connect"-Problem ist ein Twitter-Problem und kein Skriptproblem. Im schlimmsten Fall, wenn Sie Twitter oder das Skript nicht beschuldigen, ist es eine Einstellung auf Ihrem Server, aber das bezweifle ich.
Vielen Dank für die Funktion. Wie kann ich die Meldung "Rate limit exceeded. Clients may not make more than 150 requests per hour." umgehen? Ich sehe, dass die Verwendung von OAuth eine der Lösungen ist, bin mir aber nicht sicher, wie genau sie implementiert wird. Jede Hilfe wäre großartig.
Danke.
Was ich getan habe, war, den letzten Tweet in einer Datei zu cachen. So können Sie, wenn Sie den Ratenbegrenzungsfehler erhalten oder aus irgendeinem Grund den neuesten Tweet nicht von Twitter abrufen können, den lokalen Cache verwenden. Das verhindert Fehler auf Ihrer Website. Sie finden ihn hier.
Funktioniert bei mir und ist einfach zu bedienen. Ich habe in der letzten Stunde etwa 3 verschiedene Widgets ausprobiert, die meine Anforderungen nicht erfüllten. Hat mich langsam wahnsinnig gemacht… Danke :)
Toller Code, funktioniert perfekt für mich!
Nun… bis auf eine Sache
Gibt es eine Möglichkeit, nur normale Tweets anzuzeigen und keine Direktnachrichten/Erwähnungen/Antworten?
FIX
$userid = htmlspecialchars($userid);
$url = ‘url?’ . $userid . ‘url’;
Dieses Skript ist genau das, wonach ich gesucht habe!
Es hat für mich funktioniert, danke
Ich arbeite an einer Website für einen Kunden, und er möchte, dass sein gesamter Tweet auf den einzelnen Tweet bei Twitter verlinkt. Ich habe die ul in ein a-Tag eingeschlossen, was gut funktioniert, aber ich bin mir nicht sicher, welche PHP ich in das href-Attribut einfügen muss, damit es auf den einzelnen Tweet verlinkt.
Könnte mir jemand helfen?
Vielen Dank im Voraus!
Ich wollte mich nur für den Code bedanken! Funktioniert perfekt.
Perfekt! Schnell, einfach und erfüllt seinen Zweck. CSS Tricks schlägt wieder zu!
Hallo! Seit gestern funktioniert es nicht mehr!! Gab es Änderungen an der Twitter-API? Danke.
Twitter hat XML eingestellt, es wird eine Korrektur benötigt, um mit JSON und API 1.1 zu funktionieren.
"Twitter hat XML eingestellt, es wird eine Korrektur benötigt, um mit JSON und API 1 zu funktionieren."
Ja, eine Korrektur oder ein Ersatz wäre sehr nützlich, bitte. Jemand?
Es wäre großartig, wenn jemand erklären könnte, wie man Twitter-Posts im einfachen Textformat abruft, anstatt das Twitter-Widget verwenden zu müssen.
Hallo Dan
Ich bin mir nicht sicher, ob dieser Beitrag ausgehende Links erlaubt, aber ich habe eine Korrektur auf meiner Website verfügbar gemacht, hier
http://www.naileditdesign.com/tutorials/twitter-feed-for-api-v1-1
Ich dachte nur, ich teile mit, dass ich einen Artikel über Twitter-eingebettete Zeitpläne mit API v1.1 OAuth geschrieben habe.
Macht es gut, Jungs.
Danke an die obigen 2 Beiträge für ihre Updates, beide werden geschätzt!
Nach Twitter API 1.1 ist Basic Auth nicht mehr erlaubt.
Versuchen Sie, https://dev.twitter.com/docs/api/1.1 zu überprüfen.
Wie kontrolliert man die Anzahl der Tweets
Dafür müssen Sie eng mit Dachdecker-Experten in Melbourne zusammenarbeiten, um sicherzustellen
dass Sie auch das Gewicht und die Arbeitslast berücksichtigt haben, die Ihr Dach tragen kann.
(3) Es ist auch nützlich, wenn Sie Haustiere haben, würden
Lichter um die Scheune unerwünschte Besucher fernhalten. Zu allem Überfluss, der Dachdecker
der seine Arbeiter ohne Versicherung auf Ihr Dach stellen würde, ist derselbe Dachdecker, der wahrscheinlich die meisten Sicherheitsanforderungen ignorieren würde.
<?php $ret = preg_replace("/#(\w+)/", "#\\1“, $ret); ?>
<?php $ret = preg_replace("/#(\w+)/", "#\\1“, $ret); ?>
Danke Walter
Anstelle der ersten Zeile die zweite Zeile verwenden.
Die beiden obigen Kommentare sind ohne PHP.
alles geändert: https://dev.twitter.com/rest/reference/get/statuses/user_timeline
neue Twitter-Docs zu API get->status->usertimeline