我是一名新的程序员,对.js
一般都是新手。
我当前的问题是,当我在本地运行此脚本Instagram.popular(function(r){ console.log(r)})
时(即在Firefox的控制台上),我收到以下错误The access_token provided is invalid
正如我在gitHub和其他地方读到的那样,它与Instagram有关,正如所讨论here更改了一些API政策。 Instagram的更改日志为here。
如果有人能指出我正确的方向,我将非常感激。
您可以在下面看到我的完整.js
代码。
CODE
window.Instagram = {
/**
* Store application settings
*/
config: {},
BASE_URL: 'https://api.instagram.com/v1',
init: function( opt ) {
opt = opt || {};
this.config.client_id = opt.client_id;
},
/**
* Get a list of popular media.
*/
popular: function( callback ) {
var endpoint = this.BASE_URL + '/media/popular?client_id=' + this.config.client_id;
this.getJSON( endpoint, callback );
},
/**
* Get a list of recently tagged media.
*/
tagsByName: function( name, callback ) {
var endpoint = this.BASE_URL + '/tags/' + name + '/media/recent?client_id=' + this.config.client_id;
this.getJSON( endpoint, callback );
},
getJSON: function( url, callback ) {
$.ajax({
type: 'GET',
url: url,
dataType: 'jsonp',
success: function( response ) {
if ( typeof callback === 'function' ) callback( response );
}
});
}
};
Instagram.init({
client_id: '97bf259cc45f4dd6a2cd02b694b7ffe7'
});
$( document ).ready(function() {
Instagram.popular(function( response ) {
var $instagram = $( '#instagram' );
for ( var i = 0; i < response.data.length; i++ ) {
imageUrl = response.data[i].images.low_resolution.url;
$instagram.append( '<img src="' + imageUrl + '" />' );
}
});
$( '#form' ).on('submit', function( e ) {
e.preventDefault();
var tagName = $( '#search' ).val();
Instagram.tagsByName(tagName, function( response ) {
var $instagram = $( '#instagram' );
$instagram.html('');
for ( var i = 0; i < response.data.length; i++ ) {
imageUrl = response.data[i].images.low_resolution.url;
$instagram.append( '<img src="' + imageUrl + '" />' );
}
});
});
});
答案 0 :(得分:1)
首先应该从浏览器中点击Instagram popular链接开始。您会注意到您在响应中也获得了无效的访问令牌。发生这种情况是因为instagram API需要通过OAuth进行身份验证。您必须使用OAuth实现找到OAuth或第三方js liberary的js实现,并使用它来获取访问令牌并用于在后续服务器调用中获取资源。您还应该参考Instagram Developers website以了解他们如何建议实施它。
答案 1 :(得分:1)
您正在使用一些使用client_id
进行API调用的旧代码。
自2016年6月1日起,Instagram已停止允许只有client_id
的API调用。现在,您必须在URL参数中设置access_token
才能进行API调用,您必须执行oauth身份验证并获取{ {1}}如文档中所述:
https://www.instagram.com/developer/authentication/
而且你的代码access_token
也不再有效,它已被弃用,看起来你正在使用一些旧的Instagram库