【问题标题】:Google Drive API downloadFile getIo ErrorGoogle Drive API 下载文件 getIo 错误
【发布时间】:2014-04-09 15:52:48
【问题描述】:

我想创建一个 gDrive 应用。 我可以得到downloadUrl (like as string 'https://doc-0k-68-docs.googleusercontent.com/docs/securesc/gf6salc3nfs5me1dnqgnp4crl90gg593/21kfelc8h3l1qvkgskqacnee2pqjt5es/1343484000000/14678698184812381901/14678698184812381901/0B95t2gVGbZ61Sk0yNlY5TTZObUU?h=16653014193614665626&e=download&gd=true' (length=251) )

但我无法通过此链接下载。 我想,必须进行一些身份验证。

我试试这个功能,我拿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/

但是,我只是在我的网站中自动创建每个链接。

【问题讨论】:

    标签: download google-drive-api


    【解决方案1】:

    我安装了最新的 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($request);”在 - 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);
    

    但它返回错误:

    致命错误:不在对象上下文中使用 $this

    终于找到了解决方案,下面是完整代码:

    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】:

    改变这一行:

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

    作者:

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

    我自己犯了这个错误,之后,通过更改线路,我不再有问题了。

    $service 显然是关于 apiClient 而不是 apiDriveService。

    【讨论】:

    • 感谢您的回答,但现在我又犯了一个错误。 protected 'responseHttpCode' => int 404 while downloadFile 但我可以读取文件。
    • 我没有遇到此错误,因此,我无法帮助您解决此问题,但请确定:用户是否已连接到云端硬盘?我认为如果您可以放置​​ $file 和 $httpRequest 的 print_r 会很有帮助
    • 你在 apiHttprequest 中的 url 与 $file 中的下载 Url 不同。我有两种解释:或者你没有放正确的东西,或者某处有错误。您是否尝试过使用不是 .rar 的文件?还是您在更改网址?
    • 我创建了相同的帐户 google drive 和 google api。我连接同一个帐户。我检查了文件在那里。
    • 这并没有改变您的两个网址不同的事实,也许是它阻止了您。除此之外,我看不到任何其他可以阻止你的东西。
    【解决方案3】:
    $request = new Google_HttpRequest($downloadUrl, 'GET', null, null);
    $httpRequest = Google_Client::$io->authenticatedRequest($request);
    

    对于新库 google-api-php-client-0.6.0.tar.gz

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2015-02-06
      • 2022-01-03
      相关资源
      最近更新 更多