2016-06-23 12 views
0

GoogleのPHP API(https://developers.google.com/drive/v2/web/quickstart/php)を使用してGoogleドライブにファイルをリスト表示しようとしています。GoogleドライブAPI(PHP)でエラーが表示されるファイル

スコープ付きアクセストークンを取得できましたが、Googleが提供するサンプルコード(https://developers.google.com/drive/v2/reference/files/list#response)がエラーを返しています。ここで

が私のコードです:

$client = new Google_Client(); 
    $client->setAuthConfigFile('/usr/share/nginx/google.json'); 
    $client->setAccessToken($a4e->user->google_token); // access token scoped for DRIVE_READONLY 
    $drive_service = new Google_Service_Drive($client); 

    $files=retrieveAllFiles($drive_service); 
    var_dump($files); 

    function retrieveAllFiles($service) { 
     $result = array(); 
     $pageToken = NULL; 

     do { 
     try { 
      $parameters = array(); 
      if ($pageToken) { 
      $parameters['pageToken'] = $pageToken; 
      } 
      $files = $service->files->listFiles($parameters); 

      $result = array_merge($result, $files->getItems()); 
      $pageToken = $files->getNextPageToken(); 
     } catch (Exception $e) { 
      print "An error occurred: " . $e->getMessage(); 
      $pageToken = NULL; 
     } 
     } while ($pageToken); 
     return $result; 
    } 

これは、次のエラーが返されます。

Fatal error: Call to undefined method Google_Service_Drive_FileList::getItems() in /usr/share/nginx/html/tools/google/index.php on line 30

誰も私が間違ってやっている知っていますか?

事前に感謝します。

答えて

1

ドライブAPI V3を使用しており、V3でV2のメソッドを呼び出そうとしているようです。ドキュメントを明確に見ると、Drive API V2は次の形式の応答を返します{ "kind": "drive#fileList", "etag": etag, "selfLink": string, "nextPageToken": string, "nextLink": string, "items": [ files Resource ] } V2では$files->getItems()を実行できます。ドライブAPI V3は、次の形式のリスティングの返信を返します{ "kind": "drive#fileList", "nextPageToken": string, "files": [ files Resource ] } したがって、$files->getFiles()を行う必要があります。試してみる !!私はこれがうまくいくことを望みます。あなたの参照のために Drive API V3 Listing Response Drive API V2 Listing Response 。問題が解決した場合はお知らせください。

+0

ありがとうございました!これはトリックでした。 APIの間違ったバージョンのコードを使用しようとしていたことはわかりませんでした。次回はもっと注意します。この問題を解決するお手伝いをありがとう! – praine

関連する問題