Ich versuche, die neuesten Instagram-Medien eines Benutzers in eine Seitenleiste zu stellen. Ich versuche, die Instagram-API zum Abrufen der Medien zu verwenden.
http://instagram.com/developer/endpoints/users/
Die Dokumentation sagt zu GET https://api.instagram.com/v1/users/<user-id>/media/recent/
, aber es heißt, ein OAuth-Zugriffstoken zu übergeben. Ein Zugriffstoken stellt die Berechtigung dar, im Namen eines Benutzers zu handeln. Ich möchte nicht, dass sich Benutzer bei Instagram anmelden, um dies in der Seitenleiste zu sehen. Sie sollten nicht einmal einen Instagram-Account benötigen.
Zum Beispiel kann ich zu http://instagram.com/thebrainscoop gehen, ohne bei Instagram angemeldet zu sein und Fotos zu sehen. Ich möchte das über die API tun.
In der Instagram-API übergeben nicht vom Benutzer authentifizierte Anforderungen ein client_id
anstelle eines access_token
. Wenn ich das versuche, bekomme ich:
{
"meta":{
"error_type":"OAuthParameterException",
"code":400,
"error_message":"\"access_token\" URL parameter missing. This OAuth request requires an \"access_token\" URL parameter."
}
}
Ist das nicht möglich? Gibt es keine Möglichkeit, die neuesten (öffentlichen) Medien eines Benutzers abzurufen, ohne einen Benutzer zu bitten, sich zuerst über OAuth bei einem Instagram-Konto anzumelden?
quelle
Antworten:
Dies ist spät, aber es lohnt sich, wenn es jemandem hilft, da ich es in der Dokumentation von Instagram nicht gesehen habe.
Zum Ausführen von GET
https://api.instagram.com/v1/users/<user-id>/media/recent/
(zum Zeitpunkt des Schreibens) benötigen Sie kein OAuth-Zugriffstoken.Sie können durchführen
https://api.instagram.com/v1/users/[USER ID]/media/recent/?client_id=[CLIENT ID]
[CLIENT ID] ist eine gültige Client-ID, die in der App über die Verwaltung von Clients registriert ist (unabhängig vom Benutzer). Sie können [USER ID] vom Benutzernamen erhalten, indem Sie eine Suchanforderung für GET-Benutzer ausführen:
https://api.instagram.com/v1/users/search?q=[USERNAME]&client_id=[CLIENT ID]
quelle
Verwendung Sie können eine beliebige Instagram Benutzer Foto - Feed in JSON - Format herunterladen
?__a=1
neben Zielseite Adresse wie folgt aus . Keine Notwendigkeit, Benutzer-ID zu erhalten oder eine App zu registrieren, keine Token, keine oAuth.min_id
undmax_id
Variablen können für die Paginierung verwendet werden, hier ein BeispielYQL
funktioniert hier möglicherweise nicht in einem abgeschnittenen Iframe, sodass Sie ihn jederzeit manuell in der YQL-Konsole überprüfen könnenAPRIL 2018 UPDATE: Nach den letzten Instagram-Updates können Sie dies nicht auf der Clientseite (Javascript) tun, da benutzerdefinierte Header für signierte Anforderungen aufgrund von
CORS
Access-Control-Allow-Headers
Einschränkungen nicht mit Javascript festgelegt werden können . Es ist immer noch möglich , dies zu tun , überphp
oder ein anderes Server Side - Verfahren mit dem richtigen Signatur basierend aufrhx_gis
,csrf_token
und Anforderungsparameter. Sie können mehr darüber lesen Sie hier .UPDATE JANUAR 2019: YQL ist im Ruhestand. Überprüfen Sie daher mein aktuelles Update mit Google Image Proxy als
CORS
Proxy für die Instagram-Seite! Dann nur negative Moment - Paginierung mit dieser Methode nicht verfügbar.PHP
Lösung:quelle
11.11.2017
Da Instagram die Art und Weise geändert hat, wie diese Daten bereitgestellt werden, funktioniert heutzutage keine der oben genannten Methoden. Hier ist der neue Weg, um die Medien des Benutzers abzurufen :
GET
https://instagram.com/graphql/query/?query_id=17888483320059182&variables={"id":"1951415043","first":20,"after":null}
Where:
query_id
- permanenter Wert: 17888483320059182 (beachten Sie, dass er möglicherweise in Zukunft geändert wird).id
- ID des Benutzers. Es kann mit einer Liste von Benutzern kommen. Um die Liste der Benutzer zu erhalten, können Sie folgende Anfrage verwenden:GET https://www.instagram.com/web/search/topsearch/?context=blended&query=YOUR_QUERY
first
- Anzahl der zu erhaltenden Elemente.after
- ID des letzten Elements, wenn Sie Elemente von dieser ID erhalten möchten.quelle
query_id
ein dauerhafter Wert. Das heißt, es ist immer 17888483320059182 (zumindest wenn Instagram es nicht ändert). ID des Benutzers - ist die ID des Benutzers (hat meine Antwort ein wenig bearbeitet)Ich konnte die neuesten Medien eines Benutzers mithilfe der folgenden API ohne Authentifizierung abrufen (einschließlich Beschreibung, Likes, Anzahl der Kommentare).
https://www.instagram.com/apple/?__a=1
Z.B
quelle
Seit letzter Woche, als Instagram
/media/
URLs deaktiviert hat, habe ich eine Problemumgehung implementiert, die im Moment ziemlich gut funktioniert.Um alle Probleme in diesem Thread zu lösen, habe ich Folgendes geschrieben: https://github.com/whizzzkid/instagram-reverse-proxy
Es stellt alle öffentlichen Daten von instagram unter Verwendung der folgenden Endpunkte bereit:
Holen Sie sich Benutzermedien:
Holen Sie sich Benutzermedien mit maximaler Anzahl:
Verwenden Sie JSONP:
Die Proxy-API hängt auch die URLs der nächsten Seite und der vorherigen Seite an die Antwort an, sodass Sie diese nicht am Ende berechnen müssen.
Hoffe es gefällt euch!
Vielen Dank an @ 350D für das Erkennen :)
quelle
Die Instagram-API erfordert eine Benutzerauthentifizierung über OAuth, um auf den aktuellen Medienendpunkt für einen Benutzer zugreifen zu können. Derzeit scheint es keine andere Möglichkeit zu geben, alle Medien für einen Benutzer abzurufen.
quelle
Wenn Sie nach einer Möglichkeit suchen, ein Zugriffstoken für die Verwendung in einem einzelnen Konto zu generieren, können Sie dies versuchen -> https://coderwall.com/p/cfgneq .
Ich brauchte eine Möglichkeit, die Instagram-API zu verwenden, um die neuesten Medien für ein bestimmtes Konto abzurufen.
quelle
Hier ist eine Schienenlösung. Es ist eine Art Hintertür, die eigentlich die Haustür ist.
Das Objekt, das Sie zurückerhalten, hängt davon ab, ob es sich um eine Benutzersuche oder eine Tag-Suche handelt. Ich bekomme die Daten so:
Ich erhalte dann eine weitere Ergebnisseite, indem ich eine URL wie folgt erstelle:
quelle
Dank des sich ständig ändernden (und schrecklich gestalteten) API-Schemas von Instagram funktionieren die meisten der oben genannten Funktionen ab April 2018 nicht mehr.
Hier ist der neueste Pfad für den Zugriff auf einzelne Post-Daten, wenn Sie deren API direkt über das abfragen
https://www.instagram.com/username/?__a=1
Methode .Angenommen, Ihre zurückgegebenen
JSON
Daten$data
können Sie jedes Ergebnis anhand der folgenden Pfadbeispiele durchlaufen:Die wichtigsten Dinge in dieser jüngsten Änderung waren
graphql
undedge_owner_to_timeline_media
.Sieht so aus, als würden sie diesen API-Zugriff für Nicht-Geschäftskunden im Dezember 2018 beenden beenden. Machen Sie also das Beste daraus, solange Sie können.
Hoffe es hilft jemandem;)
quelle
JSFiddle
Javascript:
HTML:
CSS:
quelle
Ich möchte nur zu @ 350D Antwort hinzufügen, da es für mich schwer zu verstehen war.
Meine Logik im Code ist die nächste:
Wenn ich API zum ersten Mal aufrufe, rufe ich nur an
https://www.instagram.com/_vull_ /media/
. Wenn ich eine Antwort erhalte, überprüfe ich den Booleschen Wert vonmore_available
. Wenn es wahr ist, bekomme ich das letzte Foto aus dem Array, bekomme seine ID und rufe dann erneut die Instagram-API auf, diesmal jedochhttps://www.instagram.com/_vull_/media/?max_id=1400286183132701451_1642962433
.Wichtig hier zu wissen, diese ID ist die ID des letzten Bildes im Array. Wenn Sie also nach maxId mit der letzten ID des Bildes im Array fragen, erhalten Sie die nächsten 20 Bilder und so weiter.
Hoffe das klärt die Dinge.
quelle
Wenn Sie Oauth umgehen, wissen Sie wahrscheinlich nicht, um welchen Instagram-Benutzer es sich handelt. Davon abgesehen gibt es einige Möglichkeiten, um Instagram-Bilder ohne Authentifizierung zu erhalten.
Mit der Instagram-API können Sie die beliebtesten Bilder eines Benutzers anzeigen, ohne sich zu authentifizieren. Verwenden des folgenden Endpunkts: Hier ist der Link
Instagram bietet RSS - Feeds für Tags auf diese .
Instagram-Benutzerseiten sind öffentlich, sodass Sie PHP mit CURL verwenden können, um ihre Seite abzurufen, und einen DOM-Parser, um das HTML nach den gewünschten Bild-Tags zu durchsuchen.
quelle
Ein weiterer Trick: Suchen Sie Fotos nach Hashtags:
Wo:
query_hash
- permanenter Wert (ich glaube, sein Hash von 17888483320059182, kann in Zukunft geändert werden)tag_name
- Der Titel spricht für sichfirst
- Anzahl der zu beschaffenden Elemente (Ich weiß nicht warum, aber dieser Wert funktioniert nicht wie erwartet. Die tatsächliche Anzahl der zurückgegebenen Fotos ist geringfügig größer als der mit 4,5 multiplizierte Wert (ca. 110 für den Wert 25 und ca. 460 für den Wert) Wert 100))after
- ID des letzten Elements, wenn Sie Elemente von dieser ID erhalten möchten. Der Wert derend_cursor
JSON-Antwort kann hier verwendet werden.quelle
Nun, da
/?__a=1
die Arbeit inzwischen eingestellt ist, ist es besser, Curl zu verwenden und die Instagram-Seite wie in dieser Antwort beschrieben zu analysieren: Generieren Sie eine Instagram-API für Zugriffstoken, ohne sich anmelden zu müssen.quelle
Sie können diese API verwenden , öffentliche Informationen des instagram Benutzer abzurufen:
https://api.lityapp.com/instagrams/thebrainscoop?limit=2
Wenn Sie den Grenzwert Parameter nicht gesetzt ist , werden die Beiträge auf 12 standardmäßig begrenzt
Diese API wurde in SpringBoot mit HtmlUnit erstellt, wie Sie im Code sehen können:
Es ist ein Beispiel für eine Antwort:
quelle
Ich brauchte diese Funktion wirklich, aber für Wordpress. Ich passe und es hat perfekt funktioniert
quelle
Wenn Sie Benutzer ohne Client-ID und Zugriffstoken suchen möchten:
1: Wenn Sie alle Benutzer suchen möchten, deren Namen Ihrem Suchwort ähnlich sind:
Ersetzen Sie SeachName durch den zu suchenden Text:
https://www.instagram.com/web/search/topsearch/?query=SearchName
2: Wenn Sie genau den gleichen Namen Benutzer suchen möchten:
Ersetzen Sie den Benutzernamen durch den gewünschten Suchnamen:
quelle
Der folgende NodeJS-Code kratzt beliebte Bilder von einer Instagram-Seite. Die Funktion 'ScrapeInstagramPage' sorgt für den Post-Aging-Effekt.
Probieren Sie es hier aus
Beispiel: Bei gegebener URL ' https://www.instagram.com/dress_blouse_designer/ ' kann man die Funktion aufrufen
quelle
Dies funktioniert mit einem einfachen Ajax-Aufruf und iterierenden Bildpfaden.
quelle
Hier ist ein PHP-Skript, das die Bilder herunterlädt und eine HTML-Datei mit Links zu den Bildern erstellt. Credit 350D für PHP-Version, dies ist nur ausgearbeitet. Ich würde vorschlagen, dies ist ein Cron-Job und feuern, wie oft Sie brauchen. Verifizierte Arbeit ab Mai 2019 .
quelle