【问题标题】:Instagram API The access_token provided is invalidInstagram API 提供的 access_token 无效
【发布时间】:2016-11-21 21:14:31
【问题描述】:

我是一名新程序员,对.js 总体来说还是很陌生。 我当前的问题是,当我在本地(即在 Firefox 的控制台上)运行此脚本 Instagram.popular(function(r){ console.log(r)}) 时,我收到以下错误 The access_token provided is invalid

正如我在 gitHub 和其他地方所读到的,它与 Instagram 更改某些 API 政策有关,正如 here 所讨论的那样。 Instagram 的更改日志为here

如果有人能指出我正确的方向,我将非常感激。

您可以在下面看到我的完整 .js 代码。

代码

    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 + '" />' );
                }
            });

        });

    });

【问题讨论】:

    标签: javascript instagram-api


    【解决方案1】:

    您应该首先在浏览器中点击Instagram popular 链接。您会注意到您也收到了无效的访问令牌作为响应。发生这种情况是因为 instagram API 需要通过OAuth 完成的身份验证。您必须找到 OAuth 的 js 实现或具有 OAuth 实现的 3rd 方 js 库,并使用它来获取访问令牌并用于在后续服务器调用中获取资源。您还应该参考 Instagram Developers website 以了解他们建议如何实施它。

    【讨论】:

      【解决方案2】:

      您正在使用一些使用 client_id 进行 API 调用的旧代码。

      自 2016 年 6 月 1 日起,Instagram 停止允许仅使用 client_id 进行 API 调用。现在,您必须在 URL 参数中包含 access_token 才能进行 API 调用,您必须进行 oauth 身份验证并按照所述获取 access_token在文档中:

      https://www.instagram.com/developer/authentication/

      而且从您的代码中,/media/popular/ 也不再有效,它已被弃用,看起来您正在使用一些旧的 Instagram 库

      【讨论】:

        猜你喜欢
        • 2016-10-03
        • 2020-03-21
        • 2016-11-07
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多