2012-11-21 2 views
1

Drive SDK에 문제가 있습니다. 내 Google 드라이브 계정의 모든 파일을 내 앱으로 가져 오려고합니다. Drive SDK 설명서에 나와있는 모든 작업을 수행하고있는 것처럼 느껴지지만 파일을 가져올 때마다 빈 배열이 반환되고 오류가 발생하지 않습니다. SDK를 서비스 계정으로 사용하므로 설정이 약간 다릅니다. 그런데 내 사이트에서 drupal을 실행하고 있습니다. 여기 내 코드입니다 :Google 드라이브 SDK : 드라이브에서 반환 된 파일 배열이 없습니다.

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) 다른 측면은, 나는 서비스 개체를 잡아 및 드라이브의 파일 목록을 시도 : 여기하여 retrieveAllFiles 쿵푸이다)

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

(3) (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; 

} 

내가 말했듯이, 나는 빈 결과가 반환되고, 오류도없고, 아무것도 얻지 못한다.

내 결과가 비어있는 이유는 무엇입니까?

도움이나 제안을 크게 받으실 수 있습니다.

+0

서비스 계정을 사용하고있는 것 같습니다. 즉, SERVICE_ACCOUNT_EMAIL에 지정된 서비스 계정의 Google 드라이브에 액세스하고 있음을 의미합니다. 해당 서비스 계정의 Google 드라이브가 비어있어 비어있는 결과를 얻게됩니다. 이전에 파일을 추가 했습니까? 서비스 계정의 Google 드라이브에 액세스 하시겠습니까? 아니면 특정 사용자의 Google 드라이브에 액세스 하시겠습니까? – Nivco

답변

0

제공하신 코드에 도메인의 특정 사용자의 Google 드라이브가 아니라 서비스 계정의 Google 드라이브 자체에 액세스하고 있습니다. 서비스 계정의 Google 드라이브가 비어있어 빈 파일 배열을 가져 오는 것이 예상 된 결과 일 수 있습니다.

당신은 도메인의 특정 사용자의 Google 드라이브에 액세스하려고하고 documentation explaining how to setup Google Apps domain-wide delegation of Authority 당신이없는 한 줄 뒤에 한 경우 :

$auth->prn = $userEmail; 

이의 사용자 FO이 설치 이메일을입니다 도메인을 가장하려고합니다. 그런 다음 해당 사용자의 Google 드라이브 데이터에 액세스하게됩니다.

+0

http://stackoverflow.com/questions/13389309/google-drive-api-domain-wide-delegation-of-authority-php-instantiate-a-drive-s –

+0

그래도 고마워요, 저를 올바른 길로 인도했습니다. ! –

+0

링크를 제공해 주셔서 감사합니다! -> prn을 사용하기 위해 PHP 문서를 바꿀 것입니다 :) – Nivco

관련 문제