Ich arbeite an einer Anwendung, die in Instagram API integriert ist, um auf die Benutzerinformationen zuzugreifen. Ich habe das Access Token erfolgreich mit der Authorize-URL abgerufen, kann jedoch die userId nicht mit der Access_token-URL abrufen:
ich habe beide Endpunkte ausprobiert:
https://api.instagram.com/oauth/access_token?client_id=48275564e2c445f6b8e1356djfha3e0c&client_secret=ab2062da9f314e3489dke7ae9cbe6e5d&redirect_uri=http://localhost&grant_type=authorization_code
https://api.instagram.com/oauth/access_token
mit dem Postkörper als:
client_id=48275564e2c445f6b8e1356djfha3e0c&client_secret=ab2062da9f314e3489dke7ae9cbe6e5d&redirect_uri=http://localhost&grant_type=authorization_code&code=1351860224.4827556.5dc92c4d15ea4a4ea1b0d33eaf0eef19
(Die Daten in der Anfrage werden geändert), aber ich bekomme die folgenden Informationen
{
"code": 400,
"error_type": "OAuthException",
"error_message": "No matching code found."
}
Ich habe Unmengen von Fragen und Fragen gesehen, konnte aber keine Lösung für das Problem finden.
Die paar Fragen, die ich habe, sind:
1) is the field code in the URL is same as access_token, if not how could i get the code field's value.
2) is there any other mechanism(API) to fetch the user details given the username is not known.
Bitte helfen Sie mir, denn ich bin völlig festgefahren und kann meine Fristen einhalten.
Für mich das Deaktivieren von Deaktivieren von implizitem OAuth in instagram developer -> Clients verwalten hat das Problem behoben
Ich fand, dass die Verwendung von form-data
oder application/x-www-form-urlencoded
gut funktioniert. Das Wichtigste ist, dass die Variable code
von der Umleitung abgerufen wird. URI wird nur von einer Anfrage verwendet. Dies bedeutet, dass Sie das Zugriffstoken once für die code
anfordern können. Wenn Sie mehrmals mit derselben code
anfordern, wird der Fehler wie folgt angezeigt:
{
code: 400,
error_type: "OAuthException",
error_message: "Matching code was not found or was already used."
}
Wünsche dir das Beste ;)
Ich habe den gleichen Fehler bekommen. Es scheint, dass das Spam-System von instagram den Zugriff von Benutzern auf nicht offizielle Anwendungen unterbindet. Ändern Sie einfach das Passwort des Benutzers. In meinem Fall war es help . Versuchen Sie auch, eine andere Anwendung zu erstellen.
UPD
Von meine Antwort zu einer anderen Frage
Anscheinend erhalten Benutzer mehr als eine code
, und Sie sehen first code
, benötigen jedoch second
. Versuchen Sie relogin
-Benutzer, wenn Sie eine Fehlermeldung erhalten. Der Benutzer sieht keine Instagram-Seite mit der Bestätigungstaste, nur Umleitungen.
Möglicher Fehleralgorithmus:
1. User click auth link.
2. Get first code.
3. User click auth link (twice, redirection problem, public auth system, etc.)
4. Get another code (even on the same client_id, redirect_uri).
5. You get first code.
6. But first code already doesn't exists.
Versuchen Sie, den Parameter redirect_uri in zu url zu kodieren
http%3A%2F%2Flocalhost
Und Ihr Code-Parameter enthält das "." Zeichen, das möglicherweise ein Fehler ist.
code=1351860224.4827556.5dc92c4d15ea4a4ea1b0d33eaf0eef19
könnte das Problem verursachen
"error_message": "No matching code found."
"5dc92c4d15ea4a4ea1b0d33eaf0eef19" scheint der richtige Code zu sein
Aus Das spätere Python-Snippet von Instagram schlägt fehl, weil der HTTP-Header des inhaltlichen Typs fehlt
response, content = http_object.request(url, method="POST", body=data,headers = {"Content-type": "application/x-www-form-urlencoded"})
das Hinzufügen von application/x-www-form-urlencoded funktionierte für mich
Das Problem ist hier, dass die URL umgeleitet werden muss als http: // localhost/signin-instagram
signin-instagram Teil ist sehr wichtig Gehen Sie zu Instagram.com/developer -> Client verwalten -> Sicherheit -> Gültige Umleitungs-URIs, die mit diesem Ende festgelegt sind: http: /../Anmelden -instagram
Ich werde erwähnen, was für mich funktioniert hat.
Schritt 1. Generieren Sie ein neues Kundengeheimnis in Ihrem Panel.
Schritt 2. Folgen Sie dem in Schritt 1 genannten hier , um den Code erneut zu erhalten.
Schritt 3. Senden Sie die Anfrage erneut mit den geänderten Parametern.
Stellen Sie sicher, dass Sie beim Senden der Anfrage im Browser angemeldet sind. Sie erhalten die erforderliche Antwort.