2016-11-21 3 views
0

Ich bin ein neuer Programmierer und ziemlich neu zu .js im Allgemeinen. Meine aktuelle Problem ist, dass, wenn ich dieses Skript ausführen Instagram.popular(function(r){ console.log(r)}) lokal (dh auf der Konsole von Firefox) bekomme ich folgende Fehler The access_token provided is invalidInstagram API Das angegebene access_token ist ungültig

Wie ich in GitHub und anderen Orten lesen, es hat etwas zu tun mit Instagram einige API Änderung der Politik wie diskutiert here. Das Änderungsprotokoll für Instagram wird here gegeben.

Wenn mir jemand in die richtige Richtung zeigen kann, werde ich es sehr schätzen.

Unten können Sie meinen vollen .js Code sehen.

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

     }); 

    }); 

Antwort

1

Das erste, was Sie ist durch Schlagen Instagram popular Link im Browser gestartet werden soll. Sie werden feststellen, dass Sie als Antwort auch ein ungültiges Zugriffstoken erhalten. Dies geschieht, weil die Instagram-API eine Authentifizierung erfordert, die über OAuth erfolgt. Sie müssen eine js-Implementierung von OAuth oder einer js liberary von Drittanbietern mit OAuth-Implementierung finden und diese verwenden, um Zugriffstoken zu erhalten und um Ressourcen in nachfolgenden Serveraufrufen zu erhalten. Sie sollten auch auf Instagram Developers website verweisen, um zu sehen, wie sie die Implementierung vorschlagen.

1

Sie verwenden einen alten Code, der client_id verwendet, um API-Aufrufe durchzuführen.

Instagram ermöglicht gestoppt API-Aufrufe mit nur client_id seit dem 1. Juni 2016. Nun müssen Sie eine access_token in URL param müssen API-Aufrufe zu machen, müssen Sie die OAuth-Authentifizierung tun und bekommen access_token wie in der Dokumentation beschrieben:

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

Und auch aus dem Code /media/popular/ ist nicht mehr gültig ist, sieht es ein veraltet, wie Sie einige alte Instagram-Bibliothek verwenden

Verwandte Themen