1

ドライブSDKに問題があります。Googleドライブアカウントからアプリにすべてのファイルを取得しようとしています。Drive SDKのドキュメントに記載されているすべてのことを実行しているように感じますが、ファイルを取得するたびに、空の配列が返されます...エラーは発生しません。SDKをサービスアカウントとして使用しているため、設定が少し異なります。ちなみに私のサイトはdrupalを実行しています。これが私のコードです:

1)まず、サービスを構築します(これは、次の名前の関数の本体ですbuildService()

$key = PATH_TO_KEY_FILE;
if (file_exists($key)) {

    try {
        $auth = new Google_AssertionCredentials(
                        SERVICE_ACCOUNT_EMAIL,
                        array(DRIVE_SCOPE),
                        $key);

        $client = new Google_Client();
        $client->setUseObjects(true);
        $client->setAssertionCredentials($auth);

    } catch (Exception $e) {
        print "An error occurred: " . $e->getMessage();
    }

    return new Google_DriveService($client);

}
else{
   return "can't find key file';
}

このブロックは完全に問題ありません。Google_DriveServiceからオブジェクトを取得します

2)反対側では、サービスオブジェクトを取得し、ドライブファイルを一覧表示しようとします。

$parameters = array();
$service = buildService();  //my function from step 1
$files = retrieveAllFiles($service, $parameters);

3)retrieveAllFiles関数は次のとおりです(SDKドキュメントから直接):

function retrieveAllFiles($service, $parameters) {

    $result = array();
    $pageToken = NULL;

    do {
        try { 
            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;

} 

私が言ったように、私は空の結果が返され、エラーはなく、何も返されません。

私の結果が空である理由について何かアイデアはありますか?

ヘルプや提案は大歓迎です。

4

1 に答える 1

0

指定したコードでは、ドメイン上の特定のユーザーのGoogleドライブではなく、サービスアカウント自体のGoogleドライブにアクセスしています。サービスアカウントのGoogleドライブが空である可能性が高いため、空のファイル配列を取得することが期待される結果です。

ドメイン上の特定のユーザーのGoogleドライブにアクセスしようとしていて、Google Appsドメイン全体の権限の委任を設定する方法を説明しているドキュメントに従っている場合は、次の1行が欠落しています。

$auth->prn = $userEmail;

これは、偽装しようとしているドメインのユーザーの電子メールを設定する場所です。次に、そのユーザーのGoogleドライブデータにアクセスします。

于 2012-11-21T01:12:42.037 に答える