2014-04-03 25 views
5

Próbuję wywoływać punkty końcowe API Instagram od strony klienta. Mogę uzyskiwać dostęp do punktów końcowych opartych na GET tylko za pomocą JSONP, który Instagram recommends. Dla tych, którzy wymagają POST lub DELETE, wygląda na to, że CORS nie jest włączony, więc te typy wywołań ajaxowych zawodzą.Instagram API od strony klienta

Czy istnieje metoda lub podejście, za pomocą którego można uzyskać dostęp do tych interfejsów API po stronie klienta?

+0

ukryte formularze można publikować, ale nie można uzyskać tam wartości zwracanej, więc może to nie być przydatne dla Ciebie. możesz jednak obejść problem braku zwrotu, uruchamiając inny proces GET i sprawdzając, czy coś się zmieniło, aby wykryć sukces ręcznie. – dandavis

+0

Właśnie testowałem POST z JSONP. To działa. –

Odpowiedz

3

Nie można nawiązywać połączeń POST bezpośrednio ze strony klienta, należy skonfigurować serwer proxy, który wykonuje wywołania API Instagram dla POST i DELETE, a aplikacja kliencka może wywoływać serwer proxy.

0

ja nie rozumiem pytanie, ale ja używać API Instagram w Client Side, a ja zrobić POST i GET, używając go:

$.ajax({ 
    type: "POST", 
    "method": "POST", 

    //Use the URL in Instagram Document 
    url: 'https://api.instagram.com/v1/media/<ID>/likes?access_token=<TOKEN>', 
    dataType: "jsonp", 

    //To get response 
    success: function(result){ 

    //Exemple, if is okay or not 
    if(result.meta.code == 200){ 
    alert('ok'); 
    }else{ 
    alert('fail'); 
    } 

    } 
}); 

Można zmienić tokena i mediów id i przetestować go na http://jsfiddle.net/DvLE2/

Jeśli trzeba wysłać dane (akcja, w związku), należy dodać:

data: data; 

Exemple, dla związku (do naśladowania lub unfollow kogoś):

$.ajax({ 
     type: "POST", 
     "method": "POST", 

     url: 'https://api.instagram.com/v1/users/<ID>/relationship?access_token=<TOKEN>', 
     //action (you need that to use relationship 
     data: {action: 'follow'}, 
     dataType: "jsonp", 
     success: function(result){ 
     if(result.meta.code == 200){ 
     alert('ok'); 

     }else{ 
     alert('fail'); 
     } 

     } 
    }); 
+2

Nie można wysyłać żądań POST za pomocą JSONP. Twoją opcją 'type' powinna być" GET " –

Powiązane problemy