2012-04-18 18 views
6


Estoy tratando de conectarme a una API de Google.
Esto funciona bien en mi terminal, allí estoy:
curl https://www.googleapis.com/tasks/v1/users/@me/lists --header "Authorization: Bearer myAccessCode".
Esto funciona bien, pero ahora quiero hacer esto dentro de un programa c.
para esto he:
Haciendo https get con libcurl

CURL *curl; 
    char *header = "Authorization: Bearer myAccessCode"; 
    struct curl_slist *headers = NULL; 
    headers = curl_slist_append(headers, header); 

    curl = curl_easy_init(); 

    char *response = NULL; 

    curl_easy_setopt(curl, CURLOPT_URL, "https://www.googleapis.com/tasks/v1/users/@me/lists"); 
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 
    curl_easy_setopt(curl, CURLOPT_HTTPGET, 1); 

    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); 
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); 

    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, httpsCallback); 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response); 

    curl_easy_perform(curl); 
    curl_easy_cleanup(curl); 

Pero aquí sólo estoy un mensaje de que se requiere un inicio de sesión. No tengo idea de lo que estoy haciendo mal, ¿hay alguien que vea mi falla?

+0

me he dado cuenta de que hice: 'curl_slist_append (cabeceras, cabecera);'
en lugar de: 'headers = curl_slist_append (cabeceras, encabezado); '
Así que los encabezados siempre eran NULL e hice la solicitud get sin un encabezado.
(Lo edité en mi pregunta anterior, por lo que el código funciona, si alguien tiene un problema similar) – EarlOfEgo

+0

¿Entonces la pregunta ya está resuelta? –

+2

sí, pero mis puntos de reputación me obligaron a esperar 10 horas para responder a mi propia pregunta :-) Así que lo haré ahora. – EarlOfEgo

Respuesta

4

Como he escrito en el comentario anterior:
me he dado cuenta de que hice: curl_slist_append(headers, header);
en lugar de: headers = curl_slist_append(headers, header);
Así encabezados siempre era nulo y yo hicimos la solicitud GET sin cabecera.
(lo edité en mi pregunta anterior, por lo que el código funciona, si alguna)