我在一年前设置了一个网站,其中一个Instagram提要显示网站上一个帐户的图像。它一直工作到上周,我开始投掷:Error from Instagram: The access_token provided is invalid.
从哪儿。
我环顾四周,发现(相当逻辑上)我需要重新生成令牌。我试过通过instagram.pixelunion这样做
登录管理员帐户时。那没起效。
我想这个网站的工作原理是将clientId粘贴到网址postclient_id=xxx
and刷新页面,但这样做会返回:
{"error_type": "OAuthForbiddenException", "code": 403, "error_message": "Implicit authentication is disabled"}
这是我获取图像的代码(我还有一个instafeed.min.js):
var feed = new Instafeed({
target: "insta-images",
get: 'user',
userId: "xxxxxx",
clientId: "xxxxxxxxxxxxxxxxxxxxxxxx",
accessToken: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
resolution: "standard_resolution",
limit: 8,
template: '<li id="insta"><a href="{{link}}"><img src="{{image}}"/></a></li>'
});
feed.run();
如果您查看您的应用程序设置:
https://www.instagram.com/developer/clients/{clientId}/edit/
在“安全”下;你会检查Disable implicit OAuth
。其描述如下:
禁用Web应用程序的客户端(隐式)OAuth流程。如果选中此选项,Instagram将通过仅允许使用服务器端(显式)OAuth流的授权请求来更好地保护您的应用程序。服务器端流程被认为更安全。有关详细信息,请参阅验证文档
要解决您所面临的错误:Implicit authentication is disabled
您需要使用服务器端身份验证。这是response_type=code
而非response_type=token
在您的请求。
有关response_type
的OAuth 2.0差异的详细信息:
response_type=code
将为您提供临时代码,并使用令牌端点从代码(https://www.instagram.com/developer/authentication/)接收令牌:
curl -F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
-F 'code=CODE' \
https://api.instagram.com/oauth/access_token