API Instagram không chỉ dành cho bạn mà còn cho bất kỳ người dùng Instagram nào có khả năng xác thực với ứng dụng của bạn. Tôi đã làm theo hướng dẫn trên trang web Instagram Dev . Sử dụng phương pháp đầu tiên (rõ ràng), tôi có thể thực hiện việc này khá dễ dàng trên máy chủ.
Bước 1) Thêm liên kết hoặc nút vào trang web của bạn mà người dùng có thể nhấp vào để bắt đầu quá trình xác thực:
<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
và YOUR_REDIRECT_URI
sẽ được cung cấp cho bạn sau khi bạn đăng ký thành công ứng dụng của mình trong phần phụ trợ của Instagram, cùng với phần YOUR_CLIENT_SECRET
được sử dụng bên dưới.
Bước 2) Tại URI mà bạn đã xác định cho ứng dụng của mình, cũng giống như YOUR_REDIRECT_URI
, bạn cần chấp nhận phản hồi từ máy chủ Instagram. Máy chủ Instagram sẽ cung cấp cho bạn một code
biến trong yêu cầu. Sau đó, bạn cần sử dụng code
thông tin này và các thông tin khác về ứng dụng của mình để thực hiện một yêu cầu khác trực tiếp từ máy chủ của bạn để lấy access_token
. Tôi đã làm điều này trong python bằng cách sử dụng khuôn khổ Django, như sau:
trực tiếp django đến response
hàm trong 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'),
]
Đây là response
chức năng, xử lý yêu cầu, 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')
Đây chỉ là một cách, nhưng quá trình này phải gần như giống hệt trong PHP hoặc bất kỳ ngôn ngữ phía máy chủ nào khác.