2012-02-21 15 views
5

Moja zapytaniu URL jest https://api.instagram.com/v1/media/MYMEDIA_ID/comments?access_token=MYTOKEN&text=MYTEXTInstagram komentarze API nie można dodać wartość „tekst”

uzyskać odpowiedź tak:

{ 
    meta =  { 
     code = 400; 
     "error_message" = "Missing 'text'"; 
     "error_type" = APIInvalidParametersError; 
    }; 
} 

w dokumencie Instagram to mówi komentarz API przyjmuje dwa parametry: text i access_token. Dostarczyłem oba, i pojawia się błąd informujący, że brakuje text.

Próbowałem z różnymi symbolami zamiast &, ale nic nie działa. Czy ktokolwiek ma doświadczenie w tym, jak parametr text powinien pojawić się na żądanym adresie URL?

Wielkie dzięki!

Odpowiedz

0

Aby dodawać komentarze do Instagrama, należy wysłać tekst, który nie powinien być częścią adresu URL. Dokumentacja API Instagram stanowi przykład używając Zwijanie:

curl -F 'access_token=1084932.f59def8.deb7db76ffc34f96bada217fe0b6cd9a' \ 
    -F 'text=This+is+my+comment' \ 
    https://api.instagram.com/v1/media/{media-id}/comments 

Więc ani access_token lub tekst są częścią adresu URL tylko dane POST.

+0

Dzięki, ale był w stanie rozwiązać problem poprzez umieszczenie "text" jako htmlBody w httpRequest. był w stanie umieścić access_token w adresie URL. –

0

Wystarczy dodać tekst = MYTEXT do kodu HTTPBody żądania.

Oto przykładowy kod:

NSMutableURLRequest *apiRequest = [[NSMutableURLRequest alloc] initWithURL:apiURL]; 
apiRequest.HTTPMethod = @"POST"; 

NSMutableData *body = [NSMutableData data]; 
[body appendData:[[NSString stringWithFormat:@"text=%@", MYTEXT] dataUsingEncoding:NSUTF8StringEncoding]]; 
apiRequest.HTTPBody = body; 

[NSURLConnection sendAsynchronousRequest:apiRequest queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    // Handle the response. 
}]; 
+0

ya, zrobiłem tę samą metodę, aby go rozwiązać. zobacz moją odpowiedź poniżej .. –

2

używam hybridauth, a tutaj jest kod, to działa ..

function setUserComment($post_id, $message) 
{ 
    $flag = 0; 
    $parameters = array("text" => $message); 
    $response = $this->api->post("media/$post_id/comments", $parameters);  

    // check the last HTTP status code returned 
    if ($this->api->http_code != 200){ 
     throw new Exception("Comment failed! {$this->providerId} returned an error. " . $this->errorMessageByStatus($this->api->http_code)); 
    } 
    else{ 
     $flag = 1; 
    } 
    return $flag; 
} 
0

trzeba zmienić typ zawartości wniosku contenttype = "komentarz"

0

Uważam, że kluczem jest tutaj nagłówek ContentType. Przynajmniej nic nie działało dla mnie, dopóki nie zacząłem go definiować.

Jeśli ustawisz „ContentType”: „wieloczęściowy/form-data” trzeba ustawić się dość skomplikowaną treść ciała jak opisano tutaj: https://dotnetthoughts.net/post-requests-from-azure-logic-apps/

znalazłem dużo łatwiejszą drogę: Ustaw nagłówek „Content Type ": "application/x-www-form-urlencoded"

a następnie można ustawić swoje ciało żądania tak proste, jak klucz = url_escaped (wartości): tekst = Moja% 20comment

Powiązane problemy