繁体   English   中英

Google云端硬盘API无法访问用户数据

[英]Google Drive API won't access user data

我正在学习Drive API,到目前为止已经阅读了所有这些文档。 我只是想进行一次身份验证的呼叫,以列出驱动器中的文件。

这是用于不需要用户身份验证的内部应用程序,我只需要访问我们公司的驱动器即可。 因此,“服务帐户”听起来像是对的。

到目前为止,这是我所做的

这是我列出文件的代码

<?php

    ini_set('display_errors',1);
    ini_set('display_startup_errors',1);
    error_reporting(-1);

    require_once 'google-api-php-client/autoload.php';

    $client_id = '...'; //Client ID
    $service_account_name = '...'; //Email Address
    $key_file_location = '...'; //key.p12

    $client = new Google_Client();
    $client->setApplicationName("...");

    $service = new Google_Service_Drive($client);

    if (isset($_SESSION['service_token'])) {
        $client->setAccessToken($_SESSION['service_token']);
    }

    $key = file_get_contents($key_file_location);
    $cred = new Google_Auth_AssertionCredentials(
        $service_account_name,
        array('https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/drive.file'),
        $key
    );
    $client->setAssertionCredentials($cred);
    if ($client->getAuth()->isAccessTokenExpired()) {
      $client->getAuth()->refreshTokenWithAssertion($cred);
    }
    $_SESSION['service_token'] = $client->getAccessToken();

    $results = $service->files->listFiles();

    debug($results);

?>

我的结果是一个名为“如何开始使用云端硬盘”的文件。 因此很明显,它没有通过我的帐户进行身份验证才能显示我的驱动器文件。

任何想法如何使该服务帐户与我的驱动器帐户相关联,以便我可以获得文件列表?

如您所知,您正在服务帐户的驱动器中列出文件。 服务帐户可以被视为拥有自己的云端硬盘的用户,并且与您的用户帐户无关。

如果要访问其他用户的文件,则必须执行以下操作之一:

  1. 让用户与服务帐户共享文件
  2. 以该用户身份而非服务帐户进行身份验证
  3. 如果您是域的一部分,请具有该服务帐户的域管理员委托权限,以访问该域的所有用户的文件: https : //developers.google.com/drive/web/delegation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM