2016-06-27 70 views
0
  • 我設置我的項目使用PHP SDK for the Google Drive API
  • 我使用刷新令牌通過的OAuth2來驗證用戶(不使用 服務帳戶,如果它的事項)
  • 我得到的文件列表,從一個特定的文件夾與此
    功能:

谷歌雲端硬盤API獲取編輯URL(又名alternateLink)文件用PHP SDK

function getDriveFilesForFolder($app){ 
    // Get the API client and construct the service object. 
    $client = getClient($app); // function that gets an authorized client instance 
    $service = new Google_Service_Drive($client); 
    // we only want files from a specific folder 
    $q="'".$app->constants->get('GOOGLE_DOCS_MAIN_FOLDER_ID')."' in parents"; 
    $optParams = array(
     'q' => $q 
    ); 
    $results = $service->files->listFiles($optParams); 
    if (count($results->getFiles()) == 0) { 
     echo "No files found.<br>"; 
    } else { 
     echo "Files:<br>"; 
     foreach ($results->getFiles() as $file) { 
      //var_dump($file); 
      echo '<br><br>'; 
      echo $file->getName()." (".$file->getId().") "; 
     } 
    } 
} 

這可以工作並打印出文件名及其ID的列表。


  • 現在我需要得到一個編輯鏈接,每個文件並具有打印 出來爲好。
  • 從我的搜索,我要的是alternateLinkdocumented here對於剩下的端點
  • 我看不出有什麼功能Google_Service_Drive_DriveFileGoogle_Collection其延伸,將返回 alternateLink

我如何從$file對象alternateLink值在使用PHP SDK我的代碼?


值得一提的

  • 這些文件是預先存在的,而不是用PHP SDK

回答

0

我已經能夠拿出迄今最好的創建正在循環訪問文件對象並使用它們的ID通過使用來自經過身份驗證的php客戶端的相同訪問令牌以cURL獲取文件元數據,如下所示:

private function getFileMetaData($files){ 
    /** 
    * the php sdk doesnt seem to have a way to get the alternate url (edit url) for a file 
    * so we'll have to loop over the files and get their metadata using cURL 
    */ 
    $metadataArray=[]; 
    foreach ($files as $file) { 
     $restEndpoint="https://www.googleapis.com/drive/v2/files/".$file->getId(); 
     $ch = curl_init($restEndpoint); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Authorization: Bearer '.$this->client->getAccessToken()['access_token'] 
     )); 
     $data = curl_exec($ch); 
     $metadataArray[]=$data; 
     curl_close($ch); 
    } 
    return $metadataArray; 
} 

這有效,但肯定不覺得正確的方式來做到這一點。

發佈此信息並將其打開,希望有人知道正確的方法。

相關問題