it-swarm.com.de

Wie bekomme ich ein Instagram Access Token?

Ich habe wirklich Probleme damit, wie ich mein Zugriffstoken für Instagram bekommen soll.

Ich habe einen neuen Client registriert und dann diese URL verwendet

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

um die Client-ID einzugeben und die URL umzuleiten.

Ich wurde dann zu einer Seite weitergeleitet, auf der ein Code in der URL angezeigt wurde, aber von dort aus habe ich keine Ahnung, wo die ID dann mein Zugriffstoken erhält.

68
Gerry Mckay

Link zur offiziellen API-Dokumentation ist http://instagram.com/developer/authentication/

Kurzgeschichte - zwei Schritte:

CODE abrufen

Öffnen Sie https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code mit Informationen von http://instagram.com/developer/clients/manage/

Zugriffstoken erhalten

curl \-F 'client_id=CLIENT-ID' \
    -F 'client_secret=CLIENT-SECRET' \
    -F 'grant_type=authorization_code' \
    -F 'redirect_uri=YOUR-REDIRECT-URI' \
    -F 'code=CODE' \
    https://api.instagram.com/oauth/access_token
43
Marek Jalovec

In fast allen Antworten, die bisher veröffentlicht wurden, wird nur beschrieben, wie Zugriffstoken im Front-End gehandhabt werden, nachdem Instagram die "implizite Authentifizierung" von Instagram durchgeführt hat. Diese Methode ist gemäß den API-Dokumenten von Instagram weniger sicher und wird nicht empfohlen.

Unter der Annahme, dass Sie einen Server verwenden, können die Instagram-Dokumente keine eindeutige Antwort auf den Austausch eines Codes für ein Token geben, da sie nur ein Beispiel für eine cURL-Anforderung darstellen. Im Wesentlichen müssen Sie eine POST -Anforderung mit dem bereitgestellten Code und allen Informationen Ihrer App an ihren Server senden, und sie geben ein Benutzerobjekt zurück, das Benutzerinformationen und das Token enthält.

Ich weiß nicht, in welcher Sprache Sie schreiben, aber ich habe dies in Node.js mit dem Request-npm-Modul gelöst, das Sie hier finden können.

Ich habe die URL durchsucht und diese Informationen zum Senden der Post-Anfrage verwendet

var code = req.url.split('code=')[1];

request.post(
  { form: { client_id: configAuth.instagramAuth.clientID,
            client_secret: configAuth.instagramAuth.clientSecret,
            grant_type: 'authorization_code',
            redirect_uri: configAuth.instagramAuth.callbackURL,
            code: code
          },
    url: 'https://api.instagram.com/oauth/access_token'
  },
  function (err, response, body) {
    if (err) {
      console.log("error in Post", err)
    }else{
      console.log(JSON.parse(body))
    }
  }
);

Ersetzen Sie das configAuth-Zeug natürlich durch Ihre eigenen Informationen. Sie verwenden wahrscheinlich Node.js nicht, aber hoffentlich hilft Ihnen diese Lösung, Ihre eigene Lösung in die Sprache zu übersetzen, in der Sie sie verwenden.

10
Quest

Ich habe schon das gleiche Problem, aber ich ändere die URL in dieses 
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

9
Andre

Die Instagram-API ist nicht nur für Sie gedacht, sondern auch für jeden Instagram-Benutzer, der möglicherweise mit Ihrer App authentifiziert wird. Ich folgte den Anweisungen auf der Instagram Dev-Website . Mit der ersten (expliziten) Methode konnte ich dies ganz leicht auf dem Server erledigen. 

Schritt 1) ​​ Fügen Sie Ihrer Webseite einen Link oder eine Schaltfläche hinzu, auf die ein Benutzer klicken könnte, um den Authentifizierungsprozess zu starten:

<a href="https://api.instagram.com/oauth/authorize/?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code">Get Started</a>

Nachdem Sie Ihre App erfolgreich im Instagram-Backend registriert haben, erhalten Sie YOUR_CLIENT_ID und YOUR_REDIRECT_URI zusammen mit YOUR_CLIENT_SECRET unten angezeigt.

Schritt 2) Bei dem URI, den Sie für Ihre App definiert haben, der mit YOUR_REDIRECT_URI identisch ist, müssen Sie die Antwort vom Instagram-Server akzeptieren. Der Instagram-Server gibt eine code-Variable in der Anfrage zurück. Dann müssen Sie dieses code und andere Informationen zu Ihrer App verwenden, um eine weitere Anforderung direkt von Ihrem Server anzufordern, um den access_token zu erhalten. Ich habe dies in Python mit Django-Framework wie folgt gemacht:

leiten Sie Django an die response-Funktion in urls.py:

from Django.conf.urls import url

from . import views

app_name = 'main'
urlpatterns = [
        url(r'^$', views.index, name='index'),
        url(r'^response/', views.response, name='response'),
]

Hier ist die response-Funktion, die die Anforderung bearbeitet, views.py:

from Django.shortcuts import render
import urllib
import urllib2
import json

def response(request):
    if 'code' in request.GET:
        url = 'https://api.instagram.com/oauth/access_token'
        values = {
            'client_id':'YOUR_CLIENT_ID',
            'client_secret':'YOUR_CLIENT_SECRET',
            'redirect_uri':'YOUR_REDIRECT_URI',
            'code':request.GET.get('code'),
            'grant_type':'authorization_code'
        }
        data = urllib.urlencode(values)
        req = urllib2.Request(url, data)
        response = urllib2.urlopen(req)
        response_string = response.read()
        insta_data = json.loads(response_string)
        if 'access_token' in insta_data and 'user' in insta_data:
            #authentication success
            return render(request, 'main/response.html')
        else:
            #authentication failure after step 2
            return render(request, 'main/auth_error.html')
    Elif 'error' in req.GET:
        #authentication failure after step 1
        return render(request, 'main/auth_error.html')

Dies ist nur eine Möglichkeit, aber der Prozess sollte in PHP oder einer anderen serverseitigen Sprache nahezu identisch sein. 

5

Deaktivieren Sie implizite Befehle unter der Sicherheitsauthentifizierung und DANN laden Sie Folgendes:

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

Geben Sie in Ihrem Konto REDIRECT-URI an und geben Sie es genau wie angegeben ein.

3
Callombert

Das Zugriffstoken wird als URI-Fragment zurückgegeben, nachdem Sie die Anwendung zur Verwendung Ihrer Instagram-Daten autorisiert haben. Es sollte ungefähr so ​​aussehen: enter image description here

1
Adam

Versuche dies:

http://dmolsen.com/2013/04/05/generating-access-tokens-for-instagram/

nachdem Sie den Code erhalten haben, können Sie Folgendes tun:

curl -F 'client_id=[your_client_id]' -F 'client_secret=[your_secret_key]' -F 'grant_type=authorization_code' -F 'redirect_uri=[redirect_url]' -F 'code=[code]' https://api.instagram.com/oauth/access_token
1
ashishashen

Das hat für mich gut funktioniert:

http://jelled.com/instagram/access-token

Zu Ihrer Information, ich habe es in Kombination mit dem jQuery Instagram Plugin verwendet, das Sie hier finden können: http://potomak.github.com/jquery-instagram

0
Rinocerontes

100% arbeiten diesen Code

<a id="button" class="instagram-token-button" href="https://api.instagram.com/oauth/authorize/?client_id=CLIENT_ID&redirect_uri=REDIRECT_URL&response_type=code">Click here to get your Instagram Access Token and User ID</a>
<?PHP
  if (isset($_GET['code'])) {

        $code = $_GET['code'];

        $client_id='< YOUR CLIENT ID >';
        $redirect_uri='< YOUR REDIRECT URL >';
        $client_secret='< YOUR CLIENT SECRET >';
        $url='https://api.instagram.com/oauth/access_token';

        $request_fields = array(
            'client_id' => $client_id,
            'client_secret' => $client_secret,
            'grant_type' => 'authorization_code',
            'redirect_uri' => $redirect_uri,
            'code' => $code
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        $request_fields = http_build_query($request_fields);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $request_fields);
        $results = curl_exec($ch); 
        $results = json_decode($results,true);
        $access_token = $results['access_token'];

        echo $access_token;

        exit();
    }

?>
0
mehul

Wenn Sie Ihre Serverseite nicht aufbauen möchten, z. B. nur auf Client-Seite (Web-App oder mobile App), können Sie ein implizite Authentifizierung wählen.

Wie das Dokument besagt, machen Sie zuerst eine https-Anfrage mit

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token

Geben Sie Ihre CLIENT-ID und REDIRECT-URL ein.

Dann geht es zur Anmeldeseite, aber das Wichtigste ist, wie man das Zugriffstoken erhält, nachdem sich der Benutzer korrekt angemeldet hat.

Nachdem der Benutzer auf die Anmeldeschaltfläche mit dem richtigen Konto und dem richtigen Kennwort geklickt hat, wird die Webseite auf die angegebene URL umgeleitet, gefolgt von einem neuen Zugriffstoken.

http: // your-redirect-uri # access_token = ACCESS-TOKEN

Ich bin nicht mit Javascript vertraut, aber in Android Studio ist Eine einfache Möglichkeit, um einen Listener hinzufügendie das Ereignis hören. Die Webseite überschreibt die URL mit der neuen URL. (redirect event), dann wird die URL für die Weiterleitungs-URL an Sie übergeben, sodass Sie sie leicht aufteilen können, um das Zugriffstoken wie folgt zu erhalten:

String access_token = url.split ("=") [1];

Bedeutet das Unterteilen der URL in das String-Array in jedem "=" - Zeichen, dann ist das Zugriffstoken offensichtlich bei [1] vorhanden.

0
OOD Waterball

Wenn Sie nach Anweisungen suchen, lesen Sie diesen Artikel post . Wenn Sie C # ASP.NET verwenden, sehen Sie sich dieses repo an.

0
Mike

Mit https://www.hurl.it/ konnte ich Folgendes sehen: { "Code": 400, "Error_type": "OAuthException", "error_message": "Übereinstimmender Code wurde nicht gefunden oder wurde bereits verwendet." }

also: man muss für jede anfrage einen neuen code bekommen.

0
Tone Škoda