2012-07-28 442 views
7

我想創建一個gDrive應用程序。 我可以得到downloadUrl (如爲字符串「https://doc-0k-68-docs.googleusercontent.com/docs/securesc/gf6salc3nfs5me1dnqgnp4crl90gg593/21kfelc8h3l1qvkgskqacnee2pqjt5es/1343484000000/14678698184812381901/14678698184812381901/0B95t2gVGbZ61Sk0yNlY5TTZObUU?h=16653014193614665626 & E =下載& gd = true'(length = 251))Google Drive API下載文件getIo錯誤

但我無法通過此鏈接下載。 我想,一定要認證。

我嘗試這個功能,我把here

function downloadFile($service, $file) { 
    $downloadUrl = $file->getDownloadUrl(); 
    if ($downloadUrl) { 
    $request = new apiHttpRequest($downloadUrl, 'GET', null, null); 
    $httpRequest = $service->getIo()->authenticatedRequest($request); 
    if ($httpRequest->getResponseHttpCode() == 200) { 
     return $httpRequest->getResponseBody(); 
    } else { 
     // An error occurred. 
     return null; 
    } 
    } else { 
    // The file doesn't have any content stored on Drive. 
    return null; 
    } 
} 

我參加....

請幫助錯誤

調用未定義的方法apiDriveService :: GETIO()我。我找不到任何地方。

object(apiHttpRequest)[18] 
    protected 'url' => string 'https://doc-0k-68-docs.googleusercontent.com/docs/securesc/gf6salc3nfs5me1dnqgnp4crl90gg593/900384ep39btqvj6j91ssm11lvom8r09/1343635200000/14678698184812381901/14678698184812381901/0B95t2gVGbZ61Sk0yNlY5TTZObUU?h=16653014193614665626&e=download&gd=true&key=AIzaSyA1qi-3-tqpyzxAXhy5c9_EkVGFNsRZ9Fw' (length=295) 
    protected 'requestMethod' => string 'GET' (length=3) 
    protected 'requestHeaders' => 
    array (size=1) 
     'authorization' => string 'Bearer ya29.AHES6ZTgpamuF6g35HuLj2PW_KH06yZhLLNdNLF_MgaiFGLp' (length=60) 
    protected 'postBody' => null 
    protected 'userAgent' => string 'Tahribat google-api-php-client/0.5.0' (length=36) 
    protected 'responseHttpCode' => int 404 
    protected 'responseHeaders' => 
    array (size=10) 
     'server' => string 'HTTP Upload Server Built on Jul 25 2012 10:54:42 (1343238882)' (length=61) 
     'access-control-allow-origin' => string '*' (length=1) 
     'access-control-allow-credentials' => string 'false' (length=5) 
     'access-control-allow-headers' => string 'authorization' (length=13) 
     'access-control-allow-methods' => string 'GET,OPTIONS' (length=11) 
     'date' => string 'Mon, 30 Jul 2012 08:01:31 GMT' (length=29) 
     'expires' => string 'Mon, 30 Jul 2012 08:01:31 GMT' (length=29) 
     'cache-control' => string 'private, max-age=0' (length=18) 
     'content-length' => string '0' (length=1) 
     'content-type' => string 'text/html; charset=UTF-8' (length=24) 
    protected 'responseBody' => boolean false 
    public 'accessKey' => null 

///////

object(DriveFile)[15] 
    public 'mimeType' => string 'application/rar' (length=15) 
    public 'thumbnailLink' => null 
    protected '__labelsType' => string 'DriveFileLabels' (length=15) 
    protected '__labelsDataType' => string '' (length=0) 
    public 'labels' => 
    object(DriveFileLabels)[16] 
     public 'restricted' => boolean false 
     public 'hidden' => boolean false 
     public 'viewed' => boolean false 
     public 'starred' => boolean false 
     public 'trashed' => boolean false 
    protected '__indexableTextType' => string 'DriveFileIndexableText' (length=22) 
    protected '__indexableTextDataType' => string '' (length=0) 
    public 'indexableText' => null 
    public 'etag' => string '"WtRjAPZWbDA7_fkFjc5ojsEvE7I/MTM0MzM1NDI2OTYwMA"' (length=48) 
    public 'lastModifyingUserName' => string 'Pskptbt6' (length=8) 
    public 'writersCanShare' => boolean true 
    public 'id' => string '0By790Jqkq9pLRDRuUFZ3UWVxdGs' (length=28) 
    public 'title' => string '1caec72e95949a693dc0e95eeaeb2a9e.rar' (length=36) 
    public 'ownerNames' => 
    array (size=1) 
     0 => string 'Pskptbt6' (length=8) 
    public 'sharedWithMeDate' => null 
    public 'lastViewedByMeDate' => null 
    protected '__parentsType' => string 'ParentReference' (length=15) 
    protected '__parentsDataType' => string 'array' (length=5) 
    public 'parents' => 
    array (size=0) 
     empty 
    public 'exportLinks' => null 
    public 'originalFilename' => string 'Web Elements.rar' (length=16) 
    public 'description' => null 
    public 'editable' => boolean false 
    public 'kind' => string 'drive#file' (length=10) 
    public 'quotaBytesUsed' => string '30249130' (length=8) 
    public 'fileSize' => string '30249130' (length=8) 
    public 'createdDate' => string '2012-07-27T01:55:50.169Z' (length=24) 
    public 'md5Checksum' => string '595182e10bcc986cc8dcc41a6e945019' (length=32) 
    public 'embedLink' => null 
    public 'alternateLink' => string 'https://docs.google.com/file/d/0By790Jqkq9pLRDRuUFZ3UWVxdGs/edit' (length=64) 
    public 'permissionsLink' => null 
    public 'modifiedByMeDate' => null 
    public 'downloadUrl' => string 'https://doc-04-5s-docs.googleusercontent.com/docs/securesc/gf6salc3nfs5me1dnqgnp4crl90gg593/t1ucp1ub6sdcgk7hdatj1it5m5ntoodh/1343635200000/13117762293604295629/14678698184812381901/0By790Jqkq9pLRDRuUFZ3UWVxdGs?h=16653014193614665626&e=download&gd=true' (length=251) 
    protected '__userPermissionType' => string 'Permission' (length=10) 
    protected '__userPermissionDataType' => string '' (length=0) 
    public 'userPermission' => 
    object(Permission)[17] 
     public 'withLink' => null 
     public 'kind' => string 'drive#permission' (length=16) 
     public 'name' => null 
     public 'value' => null 
     public 'id' => string 'me' (length=2) 
     public 'authKey' => null 
     public 'etag' => string '"WtRjAPZWbDA7_fkFjc5ojsEvE7I/dLmoyrW_nZG7qLX6EhuNvVbQIq0"' (length=57) 
     public 'role' => string 'reader' (length=6) 
     public 'photoLink' => null 
     public 'type' => string 'user' (length=4) 
     public 'additionalRoles' => null 
     public 'selfLink' => string 'https://www.googleapis.com/drive/v2/files/0By790Jqkq9pLRDRuUFZ3UWVxdGs/permissions/me' (length=85) 
    public 'fileExtension' => string 'rar' (length=3) 
    public 'selfLink' => string 'https://www.googleapis.com/drive/v2/files/0By790Jqkq9pLRDRuUFZ3UWVxdGs' (length=70) 
    public 'modifiedDate' => string '2012-07-27T01:57:49.600Z' (length=24) 
    public 'webContentLink' => string 'https://docs.google.com/uc?id=0By790Jqkq9pLRDRuUFZ3UWVxdGs&export=download' (length=74) 

其實我只是想喜歡這個網站。

http://www.gdriveurl.com/

但是,只是我在我的網站上自動創建各路段。

回答

1

改變這一行:

$httpRequest = $service->getIo()->authenticatedRequest($request); 

由:

$httpRequest = apiClient::$io->authenticatedRequest($request); 

我有我自己的錯誤後,通過改變線路,我沒有問題了。

$服務顯然是關於apiClient而不是apiDriveService。

+0

謝謝你的回答 但現在我接受另一個錯誤。 protected'responseHttpCode'=> int 404 while downloadFile 但我可以讀取文件。 – 2012-07-28 21:21:01

+0

我沒有遇到這個錯誤,所以,我不能幫助你,但只是要確定:用戶是否連接到驅動器?我認爲這將是有益的,如果你可以把print_r的$ file和$ httpRequest – vicrabb 2012-07-29 05:58:40

+0

我編輯我的問題。 – 2012-07-30 08:11:34

0
$request = new Google_HttpRequest($downloadUrl, 'GET', null, null); 
$httpRequest = Google_Client::$io->authenticatedRequest($request); 

新圖書館穀歌的API-PHP-客戶0.6.0.tar.gz

8

我安裝了最新的PHP客戶端庫,並沒有上述工作的修改建議。

原始代碼

$httpRequest = $service->getIo()->authenticatedRequest($request); 
Fatal error: Call to undefined method Google_Service_Drive::getIo() 

首先建議更改:

$httpRequest = apiClient::$io->authenticatedRequest($request); 
Fatal error: Class 'apiClient' not found in ...../Drive/auth.php 

第二所建議的變化:

$httpRequest = Google_Client::$io->authenticatedRequest($request); 
Fatal error: Cannot access private property Google_Client::$io in .../Drive/auth.php 

我發現 「authenticatedRequest($請求);」 in - src/Google/Auth/OAuth2。PHP

public function authenticatedRequest(Google_Http_Request $request) 
    { 
    $request = $this->sign($request); 
    return $this->client->getIo()->makeRequest($request); 
    } 

所以我改變了呼籲:

$httpRequest = Google_Auth_OAuth2::authenticatedRequest($request); 

但它返回的錯誤:

致命錯誤:使用$這個時候不是在對象上下文

終於找到了解決方案,這裏是完整的代碼:

function downloadFile($service, $downloadUrl,$client) { 

if ($downloadUrl) { 
    $request = new Google_Http_Request($downloadUrl, 'GET', null, null); 

    $SignhttpRequest = $client->getAuth()->sign($request); 
    $httpRequest = $client->getIo()->makeRequest($SignhttpRequest); 

    if ($httpRequest->getResponseHttpCode() == 200) { 
    return $httpRequest->getResponseBody(); 
    } else { 
    // An error occurred. 
    return null; 
    } 
} else { 
    // The file doesn't have any content stored on Drive. 
    return null; 
} 
} 
+2

我通過使用: – alQemist 2014-04-09 07:45:26

+1

找到了解決方案您節省了我的一天!非常感謝你! – 2014-10-22 08:13:41