2012-02-21 7 views
5

My İstenen URL https://api.instagram.com/v1/media/MYMEDIA_ID/comments?access_token=MYTOKEN&text=MYTEXTInstagram comments API ekleyemezsiniz 'text' değeri

Ben böyle cevap almak şudur: comment API iki parametre alır diyor Instagram belgesinde

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

: text ve access_token. İkisini de sağladım ve text'un eksik olduğunu belirten hatayı alıyorum.

& yerine farklı simgeler denedim ama hiçbir şey çalışmıyor. İstenen URL'de text parametresinin nasıl görünmesi gerektiği konusunda tecrübesi olan var mı?

Çok teşekkürler!

cevap

0

Instagram'a yorum eklemek için, metni göndermeniz gerekiyor, URL'nin bir parçası olmamalı.

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

Yani ACCESS_TOKEN veya metin ne URL'ye sadece POST verileri parçasıdır: Instagram API belgelerine CURL kullanarak bir örnek sağlar.

+0

teşekkürler ama ben 'Metin' yi httpRequest'in htmlBody'si olarak ekleyerek sorunu çözebildi. URL'de access_token koydu. –

0

Sadece isteğinizin HTTPBody'sine text = MYTEXT yazınız. Eğer istek ContentType içeriği türünü değiştirmek gerekir i hybridauth kullanıyorum ve burada, bu kod çalışıyor edilir

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, onu çözmek için aynı yöntemi yaptım. cevabımı aşağıya bakın .. –

2

..

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

Buradaki anahtarın ContentType başlığı olduğuna inanıyorum. En azından hiçbir şey onu tanımlamaya başlatana kadar benim için işe yaramadı. Ben çok daha kolay yolunu buldum https://dotnetthoughts.net/post-requests-from-azure-logic-apps/

: Burada açıklandığı gibi "çok parçalı/form-data" oldukça karmaşık bir vücut içeriğini ayarlamak gerekir:

siz "ContentType'ı" ayarlarsanız

Üstbilginizi Set "İçerik -Tipi ": "application/x-www-form-urlencoded"

ve sonra = url_escaped (değer) tuşu gibi basit isteğiniz gövdesini ayarlayabilirsiniz: metin = My% 20comment