2

Bei der Durchführung oauth2 für Instagram gibt es eine Umleitung Aufruf der Form:Instagram-Weiterleitung von Python-Anfragen erhalten?

https://api.instagram.com/oauth/authorize/?client_id=<XXX>&redirect_uri=<YYY>&response_type=code&scope=basic+likes+comments 

Wenn codiert mit Requests:

s = requests.Session() 

###Create URL call with query parameters 
user_AuthRequest_Instagram = 'https://api.instagram.com/oauth/authorize/?client_id=' + Client_ID + '&redirect_uri=' + redirect_URL + '&response_type=code&scope=basic+likes+comments' 

###Get the result of this URL 
r = s.get(user_AuthRequest_Instagram, allow_redirects=True, timeout=120) 

###Checking results 
print(r.status_code, r.url, r.cookies, r.text) 

wo und REDIRECT_URL client_id sind geeignete Werte. Dies erzeugt einen 200-HTTP-status_code-Wert, aber die Weiterleitung wird niemals als Ergebnis von post aufgerufen. Der gleiche Ansatz mit urllib erzeugt das gleiche Ergebnis; Es ruft nie die Weiterleitung an, obwohl es einen 200 status_code zurückgibt.

Den gleichen URL-Befehl zu verwenden und ihn in Chrome zu löschen, ist erfolgreich, da die Weiterleitung vollständig von Instagram aus funktioniert. Getestet habe ich diese auch mit Erfolg mit WebBrower:

import webbrowser 
b = webbrowser.get('chrome') 
webbrowser.open(user_AuthRequest_Instagram) 

Also warum Anfragen Ansatz nie für diese URL Redirect Fall arbeiten?

+0

waren Sie in der Lage, dies zu erreichen, bin das gleiche Problem, aber nicht in der Lage, die Lösung zu finden. –

+0

Ja, ich bin erfolgreich mit dem unten in Antwort # 1 angegebenen Ansatz. Stellen Sie sicher, dass Ihr Browser das Javascript ausführen kann und Sie sich auf einem Computer mit geöffnetem Instagram-Konto befinden. – BryanMinorPhD

Antwort

0

Der Ansatz zur Lösung dieses Problems für den ersten Schritt des Instagram-Authentifizierungsprozesses, um ein oauth2-Token für den Server-seitigen (expliziten) Fall zu erhalten, erfordert, dass der Benutzer den ursprünglichen Post von seinem Browser sendet. Diese Anforderung erklärt das Problem, das ich mit Anfragen hatte, da diese außerhalb der Browserumgebung sind, während der Webbrowser funktioniert.

Ich fand die beste Lösung, diesen Benutzerauthentifizierungsschritt zu automatisieren, ist etwas wie Flaschen zu verwenden und eine Schaltfläche mit der Aktion zu erstellen, die der entsprechende Instagram-Aufruf ist. Das sieht so aus:

Sie können dann einen ähnlichen Ansatz verwenden, um die Instagram-Weiterleitung zu erfassen und das Token zu beenden.

+0

Hallo ich habe diesen Ansatz versucht, aber m immer noch nicht den Code oder accesstoken. eher meine Ausgabe gibt mir. Könnten Sie bitte lassen Sie mich wissen, wenn etwas fehlt. –

+0

Es scheint, dass Ihr Browser das Javascript für die Schaltfläche nicht ausführen lässt. Stellen Sie sicher, dass Javascript in dem von Ihnen verwendeten Browser aktiviert ist. Ich benutze den Chrome Browser. – BryanMinorPhD

+0

verwende ich auch Chrome-Browser. Ich werde es noch einmal versuchen. –