我真的在努力获取Instagram的访问令牌,
我已经注册了一个新客户端,然后我使用了这个URL
填写客户ID并重定向Url.
然后我被重定向到一个页面,它在Url中显示了一个代码但是从那里我没有线索,其中id然后获取我的访问令牌.
Mar*_*vec 47
链接到官方API文档是http://instagram.com/developer/authentication/
Longstory short - 两步:
获取代码
使用http://instagram.com/developer/clients/manage/中的信息打开https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
获取访问令牌
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
Run Code Online (Sandbox Code Playgroud)
Que*_*est 12
到目前为止,人们发布的几乎所有回复都只涉及如何在Instagram的客户端"隐式认证"程序之后处理前端的访问令牌.根据Instagram的API文档,这种方法不太安全且不受推荐.
假设您正在使用服务器,Instagram文档在提供有关交换令牌代码的明确答案时失败,因为它们仅提供了cURL请求的示例.基本上,您必须使用提供的代码和所有应用程序的信息向其服务器发出POST请求,并且它们将返回包含用户信息和令牌的用户对象.
我不知道你在写什么语言,但我在Node.js中用你在这里找到的请求npm模块解决了这个问题.
我通过网址解析并使用此信息发送帖子请求
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))
}
}
);
Run Code Online (Sandbox Code Playgroud)
当然用您自己的信息替换configAuth.您可能没有使用Node.js,但希望此解决方案可以帮助您将自己的解决方案转换为您使用它的任何语言.
小智 10
之前我遇到了同样的问题,但我将网址更改为此
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Instagram API不仅适用于您,也适用于任何可能通过您的应用进行身份验证的Instagram用户.我按照Instagram Dev网站上的说明进行操作.使用第一个(显式)方法,我能够在服务器上轻松地完成此操作.
步骤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>
Run Code Online (Sandbox Code Playgroud)
YOUR_CLIENT_IDYOUR_REDIRECT_URI在Instagram后端成功注册您的应用程序后,将在以下使用后提供给您YOUR_CLIENT_SECRET.
步骤2)在您为应用程序定义的URI(与之相同)中YOUR_REDIRECT_URI,您需要接受来自Instagram服务器的响应.Instagram服务器将为您code提供请求中的变量.然后,您需要使用此code应用程序和有关您的应用程序的其他信息直接从您的服务器发出另一个请求以获取access_token.我在使用Django框架的python中做到了这一点,如下所示:
直接django到response函数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'),
]
Run Code Online (Sandbox Code Playgroud)
这是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')
Run Code Online (Sandbox Code Playgroud)
这只是一种方式,但在PHP或任何其他服务器端语言中,该过程应该几乎相同.
2019年工作的简单方法
在安全性auth下禁用隐式oauth,然后加载:
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token
Run Code Online (Sandbox Code Playgroud)
在您的帐户中指定REDIRECT-URI并完全按照指定的名称输入。
小智 2
在您授权应用程序使用您的 Instagram 数据后,访问令牌将以 URI 片段的形式返回。它应该类似于以下内容:

| 归档时间: |
|
| 查看次数: |
237226 次 |
| 最近记录: |