40

私がやろうとしているのは、WebサイトからGoogleスプレッドシートを読むことだけです。GoogleDriveAPIドキュメントとStackOverflow上のすべてのGoogleDrivePHPを読み直しましたが、まだエンドゾーンに到達できません。

これが私がしたことです:

  1. Google APIコンソールにアクセスして:
    1. 「サービス」で「ドライブAPI」と「ドライブSDK」を有効にしました。
    2. 「APIアクセス」の下にOAuth2.0クライアントIDを作成しました。「WebアプリケーションのクライアントID」の下で、コンソールから「クライアントID」、「電子メールアドレス」、「クライアントシークレット」、「リダイレクトURI」、「JavaScriptオリジン」が表示されました。
  2. 「GoogleAPIPHPクライアントライブラリ」をダウンロードしました。
  3. Googleドライブドキュメント(スプレッドシート)を開き、[共有]をクリックしてドキュメントの「キー」を取得しました。
  4. 次のコードを設定します。
<?php 
session_start(); 
require_once 'lib/gapi/Google_Client.php'; 
require_once 'lib/gapi/contrib/Google_DriveService.php'; 

define( 'GDRIVE_CLIENT_ID', '<API Console - API Access - Client ID>' ); 
define( 'GDRIVE_CLIENT_SECRET', '<API Console - API Access - Client secret>' ); 
define( 'GDRIVE_REDIRECT_URIS', '<API Console - API Access - Redirect URIs>' ); 

define( 'GDRIVE_SCOPE_01', 'h t t p s://www.googleapis.com/auth/drive' ); 
define( 'GDRIVE_SCOPE_02', 'h t t p s://www.googleapis.com/auth/drive.apps.readonly' ); 
define( 'GDRIVE_SCOPE_03', 'h t t p s://www.googleapis.com/auth/drive.file' ); 
define( 'GDRIVE_SCOPE_04', 'h t t p s://www.googleapis.com/auth/drive.metadata.readonly' ); 
define( 'GDRIVE_SCOPE_05', 'h t t p s://www.googleapis.com/auth/drive.readonly' ); 
define( 'GDRIVE_FILE_KEY', '<'key' given from 'sharing' document>' ); 

$client = new Google_Client(); 
$client->setClientId( GDRIVE_CLIENT_ID ); 
$client->setClientSecret( GDRIVE_CLIENT_SECRET ); 
$client->setRedirectUri( GDRIVE_REDIRECT_URIS ); 
$client->setScopes( array( GDRIVE_SCOPE_01, GDRIVE_SCOPE_02, GDRIVE_SCOPE_03, GDRIVE_SCOPE_04, GDRIVE_SCOPE_05 ) ); 

try { 
  $file = $service->files->get( GDRIVE_FILE_KEY ); 
  echo "Title: ", $file->getTitle(); 
  echo "Description: ", $file->getDescription(); 
  echo "MIME type: ", $file->getMimeType(); 
} catch (Exception $e) { 
  echo "An error occurred: ", $e->getMessage(); 
} 
?> 

$service->files->get( GDRIVE_FILE_KEY )例外をトリガーする呼び出しまで、すべてが正常に実行されます(とにかくエラーはありません) 。

エラーが発生しました:GETの呼び出し中にエラーが発生しましたhttps://www.googleapis.com/drive/v2/files:(403)認証されていない使用の1日あたりの制限を超えました。継続して使用するには、サインアップが必要です。

私は何が間違っているのですか?私は髪を抜いた(まあ、残ったもの)。

4

5 に答える 5

7

Google ドライブ PHP クイックスタートを確認してください。クライアントを実際に承認していません。から始まる$authUrl = $client->createAuthUrl();

すべての Google ドライブ リクエストには、何らかの承認が必要です。

于 2013-02-09T16:01:33.140 に答える
4

スプレッドシートのコンテンツにアクセスするために、サービス アカウントを使用して Google スプレッドシートに対して認証を行うサンプル プロジェクトを作成しました。

https://github.com/juampynr/google-spreadsheet-readerの README をご覧ください。

于 2017-03-31T10:23:16.223 に答える
2

oauth を使用する必要があります。Google を使用しない場合は、いくつかのリクエストしか許可されません。

Google スプレッドシートからデータを読み取るか、データを書き込むだけであれば、スプレッドシート API を使用できます。php-google-spreadsheet-client をチェックしてください。

于 2013-08-17T10:29:16.737 に答える
1

自分のファイルを読み取る場合は、「Web アプリケーションのクライアント ID」ではなく、サービス アカウントが必要です。私は長い間この問題と戦ってきましたが、これが私に解決策をもたらしました: https://developers.google.com/drive/web/service-accounts

于 2014-04-22T02:11:12.007 に答える