Instagram API提供的access_token无效

时间:2016-11-21 21:14:31

标签: javascript instagram-api

我是一名新的程序员,对.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 + '" />' );
                }
            });

        });

    });

2 个答案:

答案 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库