2016-11-21 2 views
0

Я новый программист и совершенно новый для .js в целом. Мой текущий вопрос в том, что, когда я запускаю этот скрипт Instagram.popular(function(r){ console.log(r)}) локально (т.е. на консоли Firefox) я получаю следующую ошибку The access_token provided is invalidInstagram API Недопустимый доступ access_token

Как я прочитал в 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 + '" />'); 
       } 
      }); 

     }); 

    }); 

ответ

1

Первое, что вы должны начать с это нажав Instagram popular ссылку в браузере. вы заметите, что вы также получаете недействительный токен доступа. Это происходит потому, что API instagram требует аутентификации, которая выполняется через OAuth. Вы должны найти реализацию js OAuth или стороннего js liberary с реализацией OAuth и использовать его для получения токена доступа и использования для получения ресурсов в последующих вызовах сервера. вы также должны указать Instagram Developers website, а также посмотреть, как они предлагают реализовать его.

1

Вы используете старый код, который использует client_id для вызова API.

Instagram заблокировал вызовы API только с client_id с 1 июня 2016 года Теперь вы должны иметь в URL парам в access_token делать вызовы API, вы должны сделать проверку подлинности OAuth и получить access_token, как описано в документации:

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

А также из кода /media/popular/ не действует больше, его не рекомендуется, похоже, вы используете какую-то старую библиотеку Instagram

Смежные вопросы