2016-05-22 12 views
0

Hallo alles, ich habe ein Skript zum Hochladen von Dateien von offiziellen Google-Dokumenten geschrieben. Es ist eine Server-zu-Server-Authentifizierung ohne jegliche Benutzerinteraktion. Ich meine, die Dateien sollen auf ein Konto hochgeladen werden, damit Benutzer nicht zur Authentifizierung benötigt werden und die Authentifizierung mit einem privaten Dienstkonto-Schlüssel erfolgt. Meine Datei scheint gut zu laden, da sie mir keinen Fehler gibt und das vollständige Objekt wie unter dem Code angezeigt wird.Google Drive-Dateien hochladen über API nicht angezeigt

$client_email = ''; 
$json_str = file_get_contents('private_key.json'); 
$json = json_decode($json_str); 
$scopes = array('https://www.googleapis.com/auth/drive'); 
$credentials = new \Google_Auth_AssertionCredentials(
      $client_email, 
      $scopes, 
      $json->private_key 
); 


$client = new \Google_Client(); 
$client->setAssertionCredentials($credentials); 
if ($client->getAuth()->isAccessTokenExpired()) { 
    $client->getAuth()->refreshTokenWithAssertion(); 
} 
$service = new \Google_Service_Drive($client); 
$file = new \Google_Service_Drive_DriveFile(); 
$file->setTitle($quote->title); 
$file->setDescription($quote->description); 
//$file->setMimeType($mimeType); 

$result = $service->files->insert($file,array(
         'data' => file_get_contents($filePath), 
         'mimeType' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 
         'uploadType' => 'multipart', 
         'convert' => true 

        ) 
        ); 


Google_Service_Drive_DriveFile Object 

( [collection_key: protected] => Räume [internal_gapi_mappings: protected] => Array ( )

[alternateLink] => https://docs.google.com/document/d/1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w/edit?usp=drivesdk 
[appDataContents] => 
[canComment] => 
[copyable] => 1 
[createdDate] => 2016-05-22T22:13:46.332Z 
[defaultOpenWithLink] => 
[description] => google doc quote test 
[downloadUrl] => 
[editable] => 1 
[embedLink] => https://docs.google.com/document/d/1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w/preview 
[etag] => "An1NegRH_Q1WfUh5qt1ofDI9qPI/MTQ2Mzk1NTIyNjMzMg" 
[explicitlyTrashed] => 
[exportLinks] => Array 
    (
     [application/rtf] => https://docs.google.com/feeds/download/documents/export/Export?id=1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w&exportFormat=rtf 
     [application/vnd.oasis.opendocument.text] => https://docs.google.com/feeds/download/documents/export/Export?id=1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w&exportFormat=odt 
     [text/html] => https://docs.google.com/feeds/download/documents/export/Export?id=1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w&exportFormat=html 
     [application/pdf] => https://docs.google.com/feeds/download/documents/export/Export?id=1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w&exportFormat=pdf 
     [application/zip] => https://docs.google.com/feeds/download/documents/export/Export?id=1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w&exportFormat=zip 
     [application/vnd.openxmlformats-officedocument.wordprocessingml.document] => https://docs.google.com/feeds/download/documents/export/Export?id=1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w&exportFormat=docx 
     [text/plain] => https://docs.google.com/feeds/download/documents/export/Export?id=1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w&exportFormat=txt 
    ) 

[fileExtension] => 
[fileSize] => 
[folderColorRgb] => 
[fullFileExtension] => 
[headRevisionId] => 
[iconLink] => https://ssl.gstatic.com/docs/doclist/images/icon_11_document_list.png 
[id] => 1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w 
[imageMediaMetadataType:protected] => Google_Service_Drive_DriveFileImageMediaMetadata 
[imageMediaMetadataDataType:protected] => 
[indexableTextType:protected] => Google_Service_Drive_DriveFileIndexableText 
[indexableTextDataType:protected] => 
[kind] => drive#file 
[labelsType:protected] => Google_Service_Drive_DriveFileLabels 
[labelsDataType:protected] => 
[lastModifyingUserType:protected] => Google_Service_Drive_User 
[lastModifyingUserDataType:protected] => 
[lastModifyingUserName] => [email protected] 
[lastViewedByMeDate] => 2016-05-22T22:13:46.332Z 
[markedViewedByMeDate] => 1970-01-01T00:00:00.000Z 
[md5Checksum] => 
[mimeType] => application/vnd.google-apps.document 
[modifiedByMeDate] => 2016-05-22T22:13:46.332Z 
[modifiedDate] => 2016-05-22T22:13:46.332Z 
[openWithLinks] => 
[originalFilename] => 
[ownedByMe] => 
[ownerNames] => Array 
    (
     [0] => [email protected] 
    ) 

[ownersType:protected] => Google_Service_Drive_User 
[ownersDataType:protected] => array 
[parentsType:protected] => Google_Service_Drive_ParentReference 
[parentsDataType:protected] => array 
[permissionsType:protected] => Google_Service_Drive_Permission 
[permissionsDataType:protected] => array 
[propertiesType:protected] => Google_Service_Drive_Property 
[propertiesDataType:protected] => array 
[quotaBytesUsed] => 0 
[selfLink] => https://www.googleapis.com/drive/v2/files/1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w 
[shareable] => 
[shared] => 
[sharedWithMeDate] => 
[sharingUserType:protected] => Google_Service_Drive_User 
[sharingUserDataType:protected] => 
[spaces] => Array 
    (
     [0] => drive 
    ) 

[thumbnailType:protected] => Google_Service_Drive_DriveFileThumbnail 
[thumbnailDataType:protected] => 
[thumbnailLink] => 
[title] => Google doc quote2 
[userPermissionType:protected] => Google_Service_Drive_Permission 
[userPermissionDataType:protected] => 
[version] => 19 
[videoMediaMetadataType:protected] => Google_Service_Drive_DriveFileVideoMediaMetadata 
[videoMediaMetadataDataType:protected] => 
[webContentLink] => 
[webViewLink] => 
[writersCanShare] => 1 
[modelData:protected] => Array 
    (
     [labels] => Array 
      (
       [starred] => 
       [hidden] => 
       [trashed] => 
       [restricted] => 
       [viewed] => 1 
      ) 

     [parents] => Array 
      (
       [0] => Array 
        (
         [kind] => drive#parentReference 
         [id] => 0AOX081rNVUe2Uk9PVA 
         [selfLink] => https://www.googleapis.com/drive/v2/files/1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w/parents/0AOX081rNVUe2Uk9PVA 
         [parentLink] => https://www.googleapis.com/drive/v2/files/0AOX081rNVUe2Uk9PVA 
         [isRoot] => 1 
        ) 

      ) 

     [userPermission] => Array 
      (
       [kind] => drive#permission 
       [etag] => "An1NegRH_Q1WfUh5qt1ofDI9qPI/pA5gH9Z7iyxg_Vu6dNFNiyQpzOE" 
       [id] => me 
       [selfLink] => https://www.googleapis.com/drive/v2/files/1p406Vcb_cI5lgPDx4YsNmwu-mA7S0ovIPsE94PuGo6w/permissions/me 
       [role] => owner 
       [type] => user 
      ) 

     [owners] => Array 
      (
       [0] => Array 
        (
         [kind] => drive#user 
         [displayName] => [email protected] 
         [isAuthenticatedUser] => 1 
         [permissionId] => 16050536308259210811 
         [emailAddress] => [email protected] 
        ) 

      ) 

     [lastModifyingUser] => Array 
      (
       [kind] => drive#user 
       [displayName] => [email protected] 
       [isAuthenticatedUser] => 1 
       [permissionId] => 16050536308259210811 
       [emailAddress] => 
      ) 

    ) 

[processed:protected] => Array 
    (
    ) 

)

Ich habe meine ursprüngliche client_email mit E-Mail ersetzt @ gserviceaccount.com hier nur aus Sicherheitsgründen. Mein Problem ist, dass ich meine Dateien nirgendwo auf meiner Festplatte finden kann. Ich habe meine alten Dateien auf dem Laufwerk und keine neuen Dateien werden angezeigt. Was könnte das Problem sein? Klingt es aus der Antwort der API, dass die Datei erfolgreich hochgeladen wurde?

Will jede Anleitung zu schätzen wissen. Vielen Dank!

Antwort

0

Wenn Sie möchten, uploaded files in Ihrem eigenen Laufwerk Inhalte zu sein, dann müssen Sie Ihre eigenen Konto-Anmeldeinformationen für die verwenden. Dies erfordert keine Benutzerinteraktion. Sie müssen lediglich einmal ein Aktualisierungstoken erwerben und anschließend das Zugriffstoken für Drive generieren.

Dateien, die nicht in Ihrer Google Drive-Liste aufgeführt sind, weil sie nicht Ihnen gehören. Sie gehören zum Dienstkonto und berücksichtigen, dass jede Anforderung, die Ihre Anwendung an die Drive API sendet, ein Autorisierungstoken enthalten muss. Ihre Anwendung muss OAuth 2.0 verwenden, um Anfragen zu autorisieren.

Wenn die Anforderung erfolgreich ist, gibt der Server den HTTP-Statuscode 200 OK zusammen mit allen Metadaten:

HTTP/1.1 200 
Content-Type: application/json 

{ 
"id": "0Bx0vC9FG-2AmVnRic0FvSkpFNE0", 
"name": "My File" 
} 
Verwandte Themen