5

ClientLogin メソッドと cURL を使用して Google API にログインしています。これは正常に機能し、さらに使用するためのトークンを受け取りました。を使用して 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 ドキュメント アカウントで利用可能なすべてのドキュメントのリストを取得します。しかし、 API ドキュメントから取得した URL を使用して、spreadsheets.google.com に対して同じクエリを実行すると、次のようになります。

https://spreadsheets.google.com/feeds/spreadsheets/private/full

使用されているトークンが無効であることを示す 401 エラーが表示されます。どちらの場合も同じトークンとクエリを使用しています。Google スプレッドシート API には別のトークンが必要ですか?

編集:これは私がトークンをリクエストする方法です:

        $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);
4

1 に答える 1

6

簡単な答え - はい。サービスごとに異なるトークンを生成する必要があります。auh トークンを取得するために渡すサービス名は、ケースごとに異なります。詳細については、こちらをご覧ください - https://developers.google.com/gdata/faq

たとえば、ドキュメントから、スプレッドシートの要件は次のようになります

$clientlogin_post = array(
            "accountType" => "HOSTED_OR_GOOGLE",
            "Email" => "my email",
            "Passwd" => "my password",
            "service" => "wise",
            "source" => "my application name"
        );
于 2012-06-24T09:48:00.290 に答える