Я использую метод ClientLogin и cURL для входа в API Google. Это отлично работает, и я получаю токен для дальнейшего использования. Теперь я могу запросить docs.google.com с помощью
$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);
. Это работает нормально, и я получаю список всех документов, доступных в моей учетной записи Google Docs. Но если я попытаюсь выполнить тот же запрос к spreadsheets.google.com с URL-адресом, полученным из документации по API:
https://spreadsheets.google.com/feeds/spreadsheets/private/full
я получу ошибку 401, говорящую о том, что используемый токен недействителен. Я использую один и тот же токен и запрос в обоих случаях. Нужен ли мне другой токен для API таблиц Google?
Редактировать: Вот как я запрашиваю токен:
$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);