it-swarm.com.de

Wie bekomme ich ein Benutzerbild mit Twitter API 1.1?

In API 1.0 können wir users/profile_image/:screen_name verwenden.

Zum Beispiel: http://api.Twitter.com/1/users/profile_image/EA_FIFA_FRANCE

Es funktioniert aber nicht mehr in API 1.1.

Hast du eine Lösung, bitte? 

23
Steffi

Das Profilbild des Benutzers

Okay, Sie möchten ein Profilbild eines Benutzers. Sie müssen einen Blick auf die API -Dokumentation Twitter REST 1.1 werfen. Dies ist eine Liste aller verschiedenen Anforderungen, die Sie an ihre API richten können (keine Sorge, ich werde wie Sie dies später tatsächlich tun).

Es gibt mehrere Möglichkeiten, um das Profilbild des Benutzers abzurufen, aber die bemerkenswerteste ist: users/show . Gemäß den Dokumenten hierfür ist die Benutzer/Show-Methode:

Gibt eine Vielzahl von Informationen über den Benutzer zurück, die durch den erforderlichen Parameter user_id oder screen_name angegeben werden. Der neueste Tweet des Autors wird nach Möglichkeit inline zurückgegeben.

Nun, das Benutzerprofil muss irgendwo drin sein, richtig?

Sehen wir uns eine typische Antwort auf eine Anfrage nach dieser Information an. Verwenden Sie dazu den Benutzer/show-URL (wir verwenden mein Profil als Beispiel).

Example response for users/show from the Twitter 1.1 api

Ich habe einige von unten abgeschnitten, weil es eine Menge von Daten gibt, die durchlaufen werden müssen. Am wichtigsten ist, dass Sie sehen, was Sie brauchen:

profile_image_url key

Dies ist der Schlüssel profile_image_url, auf den Sie zugreifen müssen.

Also, wie machst du das alles? Es ist eigentlich ziemlich einfach.

Authentifizierte Anfragen

Wie Sie zu Recht darauf hingewiesen haben, können Sie ab dem 11. Juni 2013 keine nicht authentifizierten Anfragen mehr an die 1.0-API stellen, da diese zurückgezogen wurden. Daher ist OAuth der Weg, Anforderungen an die 1.1-API zu stellen.

Ich habe ein stack overflow post mit dem Ziel geschrieben, allen zu helfen, authentifizierte Anfragen an die 1.1-API mit wenig oder gar keinem Aufwand zu stellen.

Wenn Sie es verwenden, erhalten Sie die Antwort, die Sie oben sehen. Befolgen Sie Schritt für Schritt die Anweisungen für die Beiträge, und Sie können die Bibliothek hier erhalten (Sie müssen nur eine Datei in Ihr Projekt einfügen).

Grundsätzlich erklärt der vorherige Beitrag, dass Sie Folgendes tun müssen:

  • Erstellen Sie ein Twitter-Entwicklerkonto
  • Holen Sie sich einen Satz eindeutiger Schlüssel von Twitter (insgesamt 4 Schlüssel).
  • Stellen Sie Ihre Anwendung auf Lese-/Schreibzugriff ein
  • Include TwitterApiExchange.php (die Bibliothek) einschließen
  • Legen Sie Ihre Schlüssel in ein $settings-Array
  • Wählen Sie Ihre URL und Anfragemethode (Post/Get) aus den Dokumenten aus (ich lege den Link oben!)
  • Machen Sie die Anfrage, das ist es!

Ein praktisches Beispiel

Ich gehe davon aus, dass Sie die Schritt-für-Schritt-Anweisungen in dem obigen Beitrag (mit hübschen Farbfotos) befolgt haben. Hier ist der Code, den Sie verwenden würden, um das zu bekommen, was Sie möchten.

// Require the library file, obviously
require_once('TwitterAPIExchange.php');

// Set up your settings with the keys you get from the dev site
$settings = array(
    'oauth_access_token' => "YOUR_ACCESS_TOKEN",
    'oauth_access_token_secret' => "YOUR_ACCESS_TOKEN_SECRET",
    'consumer_key' => "YOUR_CONSUMER_KEY",
    'consumer_secret' => "YOUR_CONSUMER_SECRET"
);

// Chooose the url you want from the docs, this is the users/show
$url = 'https://api.Twitter.com/1.1/users/show.json';
// The request method, according to the docs, is GET, not POST
$requestMethod = 'GET';

// Set up your get string, we're using my screen name here
$getfield = '?screen_name=j7mbo';

// Create the object
$Twitter = new TwitterAPIExchange($settings);

// Make the request and get the response into the $json variable
$json =  $Twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest();

// It's json, so decode it into an array
$result = json_decode($json);

// Access the profile_image_url element in the array
echo $result->profile_image_url;

Das wars so ziemlich! Sehr einfach. Es gibt auch Benutzer/Lookup , die effektiv dasselbe tun, aber Sie können:

Gibt vollständig hydrierte Benutzerobjekte für bis zu 100 Benutzer pro Anforderung zurück, wie in durch Kommas getrennten Werten angegeben, die an die Parameter user_id und/oder screen_name übergeben werden.

Wenn Sie mehr als einen Benutzer benötigen, verwenden Sie diese. Wenn Sie jedoch nur einen Benutzer benötigen, verwenden Sie user/show wie oben.

Ich hoffe, das hat ein bisschen geklärt!

34
Jimbo
52
Simon Briche

Sie sagen, Sie möchten Twitter API 1.1 verwenden, und Sie möchten Ihre Anforderungen jedoch nicht authentifizierenNicht authentifizierte Anforderungen werden in API v1.1 nicht unterstützt. Passen Sie also bitte die API-Änderung an. Updates anzeigen:

Sie können ein Bild aus dem profile_image_url-Feld der https://api.Twitter.com/1.1/users/show.json-Anforderung erhalten. Für diese Methode ist entweder eine id oder ein screen_name erforderlich. Zum Beispiel :

GET    https://api.Twitter.com/1.1/users/show.json?screen_name=rsarver

Details finden Sie hier https://dev.Twitter.com/docs/api/1.1/get/users/show

1
user568109

Wie die vorangegangenen Antworten und Kommentare hervorheben:

  1. Twitter API v1.0 ist veraltet
  2. Für Twitter API v1.1 ist OAuth erforderlich
  3. OP (@Steffi) möchte sich nicht authentifizieren

Wähle zwei aus. Mit allen drei ist es ein No-Go. @ Jimbos Antwort ist korrekt (und der richtige Weg, dies zu tun), schließt jedoch # 3 aus. Heraus werfen # 1 bedeutet, in die Vergangenheit zu gehen. Aber wir können # 2 wegwerfen und gehen direkt zur Quelle:

curl -s https://Twitter.com/EA_FIFA_FRANCE |
  sed -ne 's/^.*ProfileAvatar-image.*\(https:[^"]*\).*$/\1/p'

Der Befehl sed sagt nur, suchen Sie die Zeile, die "ProfileAvatar-Bild" enthält, und drucken Sie den Teilstring aus, der wie eine URL in Anführungszeichen aussieht.

Dies ist weniger stabil als ein authentifizierter API-Aufruf, da Twitter den HTML-Code jederzeit ändern kann. Dies ist jedoch einfacher als der Umgang mit OAuth und es gibt keine offiziellen Tarifgrenzen!

Die Übersetzung von PHP sollte unkompliziert sein.

0
chbrown

versuche dies

http://api.Twitter.com/1/users/profile_image/{Twitter_account}.xml?size=bigger

In API 1.1 besteht die einzige Möglichkeit darin, Ihre Anwendung zu verbinden, indem Sie den Benutzer abrufen 

https://dev.Twitter.com/docs/api/1.1/get/users/show

und nach seinem Bild holen

profile_image_url
0
Osin Toumani