Google Drive API v2 downloadUrl未经过适当的身份验证

时间:2017-08-07 01:02:45

标签: php api google-drive-api

我在使用访问令牌发出授权请求后返回的downloadUrl属性出现问题。如果我尝试在浏览器中使用该downloadUrl,它将提供HTTP错误403.我已经双重检查,我的访问令牌有效,我可以通过这种方式请求文件元数据,这是怎么回事我能够首先获得downloadUrl。 这是我现在的代码:

<?php
require_once('vendor/autoload.php');
include_once "examples/templates/base.php";

$client = new Google_Client();
$credentials_file = __DIR__.'/credentials.json';
putenv('GOOGLE_APPLICATION_CREDENTIALS='.$credentials_file);
if ($credentials_file = checkServiceAccountCredentialsFile()) {
    // set the location manually
    $client->setAuthConfig($credentials_file);
} elseif (getenv('GOOGLE_APPLICATION_CREDENTIALS')) {
    // use the application default credentials
    $client->useApplicationDefaultCredentials();
} else {
    echo missingServiceAccountDetailsWarning();
    exit;
}

$client->setApplicationName('test-debug');
$client->setScopes(array('https://www.googleapis.com/auth/drive.readonly'));
$service = new Google_Service_Drive($client);

$id = "some-id-here";

$pre = "https://www.googleapis.com/drive/v2/files/";

$tokenArray = $client->fetchAccessTokenWithAssertion();
$accessToken = $tokenArray["access_token"];

$content = json_decode(file_get_contents($pre.$id."?access_token=".$accessToken));
$downloadUrl = $content->{'downloadUrl'};
echo $downloadUrl;

?>

使用此代码,我可以成功向Google的API发出请求并检索downloadUrl参数。唯一的问题是,由于某种原因,它不是有效的。谁会知道为什么会发生这种情况?它是否与我如何使用访问令牌发出请求有关?如果你认为你能解决这个问题,请发信息。

P.S。我还想提一下,使用php cURL会返回错误401而不是错误403

1 个答案:

答案 0 :(得分:0)

因此,在检查Drive v2 PHP Quickstart时,

  

PHP客户端库不再支持Drive v2。见   而是Drive v3 PHP Quickstart

要从云端硬盘v3开始,您需要ff。

  
      
  • PHP 5.4或更高版本,安装了命令行界面(CLI)和JSON扩展。
  •   
  • Composer依赖关系管理工具。
  •   
  • 访问互联网和网络浏览器。
  •   
  • 启用了Google云端硬盘的Google帐户。
  •