Вход в Google Spreadsheet API с использованием ClientLogin и PHP/cURL.

Я использую метод 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);

5
задан Marco 24 June 2012 в 09:23
поделиться