Ich habe also festgestellt, dass Apps wie Tinder Instagram zeigen können, sagen wir, User A auf allen anderen Handys, auch ohne dass andere Benutzer sich in Instagram anmelden müssen.
Zum Beispiel: Benutzer-A verbindet Instagram und erhält Zugriffstoken. Benutzer-B, C, D ... können A's public & amp; private Bilder, ohne sich selbst in Instagram einzuloggen.
Gibt es eine Möglichkeit, das Instagram eines anderen Benutzers anzuzeigen, ohne ein Zugriffstoken zu benötigen - sogar private Bilder, indem nur CLIENT_ID verwendet wird?
Machen wir keine Verwirrung. Tinder-Nutzer können sich für die Freigabe von Instagram-Fotos anmelden. Tinder hat keinen weltweiten Zugriff auf Instagram-Fotos. Ich werde Ihnen aus der Sicherheitsperspektive antworten, da ich noch nie versucht habe, ein Tinder-Konto mit Instagram-Verbindung einzurichten, um das Szenario für Sie zu testen. Von meinem Verständnis von Instagram-APIs könnte es unmöglich sein, private von Nutzern zu erhalten Bilder. Aber ich könnte mich irren, also lass mich meine Diskussion fortsetzen.
Access-Token ist in Tinder-App-Code eingebettet, Sie können es finden oder nicht, wenn Sie den Code entsprechend der Verschleierungsebene dekompilieren, und fast sicher, wenn Sie Software wie mitmproxy
verwenden. Ich werde hier über eine solche Praxis nicht sprechen.
Dem Tinder-Client wird also ein Token für den Zugriff auf Benutzerbilder gewährt.
Der Nutzer entscheidet sich für Tinder / Instagram, um auf seine privaten Fotos zuzugreifen. Ein Token mit einem einzigen Zugriff ist für Bilder aller Benutzer gültig, die sich für Instagram entschieden haben. Wenn Sie Tinders Token stehlen, können Sie auf die privaten Fotos eines jeden Zunder-Instagram-Benutzers zugreifen. Das ist nicht schlecht. Der Benutzer hat entschieden, private Fotos für die Welt freizugeben. Aber wenn ein Instagram-Benutzer kein Tinder-Benutzer ist, sei sicher, dass du nichts bekommen wirst
Beachten Sie, dass das Token für die Tinder-Anwendung gültig ist und das Token nicht von Benutzer A ist. Dies ist durch Sicherheitspraktiken verboten.
Wenn Sie Ihr Tinder-Konto mit Instagram verknüpfen, gewähren Sie Tinders bereits ausgestellten Token für den Zugriff auf Ihre Fotos im Namen von Sie .
>Zusammenfassung:
Hinweis: Der Tinder-Client darf oder darf kein von Instagram ausgegebenes Token verwenden. Aus Sicht der allgemeinen Sicherheit gibt es zwei Implementierungsszenarien:
Die vorherige Antwort ist viel zu verwirrend ... also lassen Sie uns auf einfache Art und Weise auf Ihre Frage eingehen.
Beginnen wir zu verstehen, was in der API , in API-Anfragen gleichermaßen, access_token
, ist:
api.instagram.com/v1/users/self/media/recent/ access_token =% @
Wenn Sie diese API über die API ausführen, müssen Sie weiterhin Zugriff gewähren und Authentifizierung (siehe Handbuch zu Empfangen eines access_token ). Wie Sie dort lesen können, benötigen alle möglichen Optionen noch authentifizierten Zugriff.
Obwohl unsere Zugriffstoken keine Ablaufzeit angeben, sollte Ihre App den Fall behandeln, dass entweder der Benutzer den Zugriff widerruft oder Instagram den Token nach einer gewissen Zeit abloggt . Wenn das Token nicht mehr gültig ist, enthalten API-Antworten einen "error_type = OAuthAccessTokenError". In diesem Fall müssen Sie den Benutzer erneut authentifizieren , um ein neues gültiges Token zu erhalten. Mit anderen Worten: gehen Sie nicht davon aus, dass Ihr access_token für immer gültig ist.
Dies ist der Standard-Authentifizierungsprozess bei der Programmierung, mit den Zugriffstoken , Sitzungskennungen , usw.
Die Welt lebt mit OAuth 2.0 Authorization Protocol a> Sie sind lange nicht der Letzte, der sich darum kümmert. Wenn Sie gut schlafen und etwas über das Session-Hijacking wissen, sollten Sie sich nicht so viele Gedanken über mögliche Sicherheitsprobleme im Zusammenhang mit der Nutzung machen von APIs durch Zugriffstoken.
Es ist sicher genug. Aha, und noch eine "kleine Sache", habe ich vergessen zu erwähnen: Alle Anfragen an die Instagram API müssen über SSL erfolgen (http s : // nicht http: // ), die noch mehr Vertrauen hinzufügt.
Um Ihre Frage explizit zu beantworten:
"gibt es eine Möglichkeit, das Instagram eines anderen Benutzers ohne Zugriffstoken anzuzeigen - sogar private Bilder, indem Sie einfach CLIENT_ID verwenden?"
Nein , es gibt keine Möglichkeit. Sicherheits-Token ist die Sache, die die Gewährung von Zugriff und Authentifizierung erfordert. Wenn es diese Art von Zugriff erlauben würde - würde dies als Sicherheitslücke gewertet werden. Dies ist die Grundlage des OAuth-Mechanismus. Wenn Sie mehr Verständnis benötigen, können Sie hier in einer einfachen Sprache lesen, wie OAuth ein Authentifizierungsprotokoll ist .
Wenn Sie eine schnelle Lösung des Problems wünschen, würde ich OAuth um jeden Preis vermeiden , wenn Sie mit öffentlichen Daten arbeiten. Ich würde ein Curl-Skript schreiben, um die öffentlichen Instagram-Daten von der Profil-URL des Benutzers zu holen und die HTML-Server-Seite (oder Client-Seite) zu analysieren.
Hier ist ein kurzes Beispielbeispiel in PHP mit file_get_contents
und DOMDocument
:
Nehmen wir an, dass Instagram-Benutzerprofilseiten wie die ISS-Seite online ohne jeglichen Authentifizierungszugriff verfügbar sind:
Aufgrund der Funktionsweise von Instagram werden hier nur öffentliche Bilder angezeigt (plus Posts, Follower, Follower).
Sie müssen also die Seitendaten abrufen. Um dies zu tun, können Sie verschiedene Lösungen wie PhantomJS verwenden, die so wenig wie das Schreiben sind
%Vor% Wenn Sie also annehmen, dass Sie diesen Prozess serverseitig ausführen können, könnten Sie diese öffentlichen Profilbilder als JSON-Objekt in einer API-Antwort bereitstellen. Natürlich ist es ein bisschen komplizierter als das (dh Sie müssen warten, dass Seitenressourcen in PhantomJS
geladen werden, aber am Ende kann der Web Scraper die Seite temporär speichern und in eine JSON-Struktur umwandeln, mit <img/>
Quellbilder usw., die in einer App angezeigt werden können.
Tags und Links instagram instagram-api