2012-04-18 33 views
6


Sto provando a connettermi a un google api.
Questo funziona bene nel mio terminale, ci sto facendo:
curl https://www.googleapis.com/tasks/v1/users/@me/lists --header "Authorization: Bearer myAccessCode".
Questo funziona bene, ma ora voglio farlo all'interno di un programma c.
per questo sono:
Fare https 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); 

Ma qui io sono solo ottenere un messaggio che è necessario un login. Non ho idea di cosa sto sbagliando, c'è qualcuno che vede il mio fallimento?

+0

Ho appena realizzato che ho fatto: 'curl_slist_append (header, intestazione);'
invece di: 'headers = curl_slist_append (header, header); '
Quindi le intestazioni erano sempre NULL e ho fatto la richiesta get senza intestazione.
(L'ho modificato nella mia domanda sopra, quindi il codice funziona, se qualcuno ha un problema simile) – EarlOfEgo

+0

Quindi la domanda è già stata risolta? –

+2

sì, ma i miei punti di reputazione mi hanno costretto ad aspettare 10 ore per rispondere alla mia stessa domanda :-) Quindi lo farò ora. – EarlOfEgo

risposta

4

Come ho scritto nel commento di cui sopra:
Ho appena realizzato che ho fatto: curl_slist_append(headers, header);
invece di: headers = curl_slist_append(headers, header);
Così intestazioni era sempre NULL e ho fatto la richiesta GET senza un colpo di testa.
(ho modificato nella mia domanda di cui sopra, in modo che il codice funziona, se alcuni)