2012-02-21 1 views
5

Мой запрошенный URL является https://api.instagram.com/v1/media/MYMEDIA_ID/comments?access_token=MYTOKEN&text=MYTEXTInstagram комментарии API не может добавить «текст» значение

я получаю ответ, как это:

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

В документе Instagram говорится комментарий API принимает два параметра: text и access_token. Я предоставил оба, и я получаю сообщение об ошибке text.

Я пробовал с разными символами вместо &, но ничего не работает. Есть ли у кого-нибудь опыт использования параметра text в запрошенном URL-адресе?

Большое спасибо!

ответ

0

Чтобы добавить комментарии к Instagram, вам необходимо разместить текст, чтобы оно не было частью URL. Документация API Instagram представляет собой пример с использованием CURL:

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

Так ни access_token или текст является частью URL только данных POST.

+0

спасибо, но я смог решить проблему, поставив «текст» как htmlBody для httpRequest. смог поместить access_token в URL-адрес, хотя. –

0

Просто добавьте текст = MYTEXT в HTTPBody вашего запроса.

Вот пример кода:

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, я сделал тот же метод для его решения. см. мой ответ ниже .. –

2

я использую hybridauth, а вот код, он работает ..

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

вам нужно изменить тип содержимого запроса ContentType = "комментарий"

0

Я считаю, что ключом здесь является заголовок ContentType. По крайней мере, ничто не работало для меня, пока я не начал его определять.

Если установить «ContentType»: «многочастному/форм-данных» необходимо установить довольно сложное содержание тела, как описано здесь: https://dotnetthoughts.net/post-requests-from-azure-logic-apps/

я нашел гораздо более простой путь: Установить заголовок «Content -Тип ": "применение/х-WWW-форм-urlencoded"

, а затем вы можете настроить тело запроса так просто, как ключ = url_escaped (значение): текст = My% 20comment

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