Instagram API 不仅适用于您,也适用于任何可能使用您的应用进行身份验证的 Instagram 用户。我关注了instructions on the Instagram Dev website。使用第一种(显式)方法,我可以在服务器上轻松完成此操作。
第 1 步)向您的网页添加一个链接或按钮,用户可以点击该链接或按钮来启动身份验证过程:
<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 和 YOUR_REDIRECT_URI 将在您成功在 Instagram 后端注册您的应用后提供给您,以及下面使用的YOUR_CLIENT_SECRET。
第 2 步) 在您为应用定义的 URI(与 YOUR_REDIRECT_URI 相同)处,您需要接受来自 Instagram 服务器的响应。 Instagram 服务器将在请求中反馈给您一个 code 变量。然后您需要使用此code 和有关您的应用程序的其他信息直接从您的服务器发出另一个请求以获取access_token。我使用Django框架在python中做了这个,如下:
将 django 定向到 urls.py 中的 response 函数:
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'),
]
这里是response函数,处理请求,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')
这只是一种方式,但该过程在 PHP 或任何其他服务器端语言中应该几乎相同。