Die Instagram-API ist nicht nur für Sie gedacht, sondern für jeden Instagram-Benutzer, der sich möglicherweise bei Ihrer App authentifiziert. Ich habe die Anweisungen auf der Instagram Dev-Website befolgt . Mit der ersten (expliziten) Methode konnte ich dies ganz einfach auf dem Server tun.
Schritt 1) Fügen Sie Ihrer Webseite einen Link oder eine Schaltfläche hinzu, auf die ein Benutzer klicken kann, 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>
YOUR_CLIENT_ID
und YOUR_REDIRECT_URI
wird Ihnen gegeben, nachdem Sie Ihre App erfolgreich im Instagram-Backend registriert haben YOUR_CLIENT_SECRET
.
Schritt 2) An der URI, die Sie für Ihre App definiert haben YOUR_REDIRECT_URI
, müssen Sie die Antwort vom Instagram-Server akzeptieren. Der Instagram-Server gibt Ihnen eine code
Variable in der Anfrage zurück. Dann müssen Sie diese code
und andere Informationen zu Ihrer App verwenden, um eine weitere Anfrage direkt von Ihrem Server zu stellen, um die zu erhalten access_token
. Ich habe dies in Python mit dem Django-Framework wie folgt gemacht:
direkter Django zur 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 Anfrage 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.