Sto utilizzando il metodo ClientLogin e cURL per accedere alle API di Google. Funziona bene e ricevo un token per ulteriore utilizzo. Ora posso interrogare docs.google.com utilizzandoAccedi all'API di Google Spreadshet utilizzando ClientLogin e PHP/cURL
$curl = curl_init();
$headers = array(
"Authorization: GoogleLogin auth=" . $auth,
"GData-Version: 3.0",
);
curl_setopt($curl, CURLOPT_URL, "https://docs.google.com/feeds/default/private/full");
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
curl_close($curl);
Questo funziona bene e ho un elenco di tutti i documenti disponibili nei miei documenti Google. Ma se provo la stessa query per spreadsheets.google.com con l'URL ottenuto dalla api documentation:
https://spreadsheets.google.com/feeds/spreadsheets/private/full
ottengo un errore di 401 dicendo che il token utilizzato non è valido. Sto usando lo stesso token e la query in entrambi i casi. Ho bisogno di un token diverso per l'API dei fogli di lavoro di Google?
Edit: Questo è come mi chiedo il Token:
$clientlogin_url = "https://www.google.com/accounts/ClientLogin";
$clientlogin_post = array(
"accountType" => "HOSTED_OR_GOOGLE",
"Email" => "my email",
"Passwd" => "my password",
"service" => "writely",
"source" => "my application name"
);
$curl = curl_init($clientlogin_url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $clientlogin_post);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($curl);
preg_match("/Auth=([a-z0-9_-]+)/i", $response, $matches);
$auth = $matches[1];
curl_close($curl);
lo stesso motivo dovrebbe andare bene, ma come commento $ ricciolo = curl_init(); e usa lo stesso oggetto $ curl anche per spreadsheets.google.com. Fatemi sapere se questo ha aiutato –
sfortunatamente questo non ha alcun effetto – Marco
Ah, penso che sia necessario eseguire l'autenticazione per tutti i domini. Penso che Google tratti docs.google.com e fogli di lavoro. google .com come due diversi servizi che richiedono autorizzazioni proprie. Puoi testare rapidamente i risultati da -> 1. ottenere l'elenco di google docs, salvare auth 2. utilizzare la stessa autorizzazione per i fogli di lavoro, catturare l'errore e 3. utilizzare di nuovo la stessa auth per Google Documenti, se funziona, allora il nostro l'ipotesi è giusta. –