2012-02-21 9 views
5

Mi dirección URL solicitada es https://api.instagram.com/v1/media/MYMEDIA_ID/comments?access_token=MYTOKEN&text=MYTEXTInstagram comentarios API no puede agregar valor 'texto'

puedo obtener una respuesta como esta:

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

En el documento Instagram que dice la API comentario tiene dos parámetros: text y access_token. He proporcionado ambos y aparece el error que dice text.

He intentado con diferentes símbolos en lugar de & pero nada funciona. ¿Alguien tiene experiencia sobre cómo debería aparecer el parámetro text en la URL solicitada?

Gracias mucho!

Respuesta

0

Para agregar comentarios a Instagram necesitas publicar el texto que no debe ser parte de la URL. La documentación de la API de Instagram ofrece un ejemplo usando CURL:

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

Así que ni el señal_acceso o el texto son parte de la URL sólo datos POST.

+0

gracias, pero fue capaz de resolver el problema al poner 'text' como htmlBody de httpRequest. Sin embargo, fue capaz de poner access_token en la URL. –

0

Simplemente agregue el texto = MYTEXT al HTTPBody de su solicitud.

Aquí es código de ejemplo:

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, hice el mismo método para resolverlo. ver mi respuesta a continuación .. –

2

estoy usando hybridauth, y aquí está el código, que está trabajando ..

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

necesita cambiar el tipo de contenido de la solicitud ContentType = "comment"

0

Creo que la clave aquí es el encabezado ContentType. Al menos nada funcionó para mí hasta que comencé a definirlo.

Si ajusta "ContentType": "multipart/form-data", tendrá que configurar todo un contenido complejo cuerpo como se describe aquí: https://dotnetthoughts.net/post-requests-from-azure-logic-apps/

encontré camino mucho más fácil: Indica tu encabezado "Content de tipo ": "application/x-www-form-urlencoded"

y entonces se puede establecer su solicitud cuerpo tan simple como clave = url_escaped (valor): texto = Mi% 20comment