【发布时间】:2021-12-21 22:49:20
【问题描述】:
我的个人 Google 帐户下有一个 Google 云端硬盘。我还在我的个人 Google 帐户下设置了一个带有服务帐户的 Google App。该服务帐号具有所有者角色。
我正在尝试使用服务帐户来获取我的 Google 云端硬盘中某个文件夹的近期活动列表。我将服务帐户电子邮件添加为具有编辑权限的文件夹的共享用户。但是,每当我运行 Google Activity API 时,我都没有得到任何活动结果,即使我在共享文件夹中执行各种操作,例如添加文件。
我在 PHP 中通过
$client = new Google_Client();
$client->setApplicationName('Some App');
$client->setAuthConfig( __DIR__ . '/service_account.json');
$client->setScopes(Google_Service_DriveActivity::DRIVE_ACTIVITY_READONLY);
$client->fetchAccessTokenWithAssertion();
$service = new Google_Service_DriveActivity($client);
// Print the recent activity in your Google Drive.
$request = new Google_Service_DriveActivity_QueryDriveActivityRequest();
$request->setPageSize(10);
$results = $service->activity->query($request);
if (count($results->getActivities()) == 0) {
print "No activity.\n";
else // do something
它总是触发“无活动”。我单步执行代码,没有错误。服务帐号附加到的项目启用了 Google Activity API。
也许这不起作用,因为服务帐户不是执行活动的帐户?虽然我认为服务帐户的全部意义在于代表某人(在这种情况下是我自己)获取数据访问权限。
我刚刚进行了测试 - 我为我的应用程序使用了 Oauth2 凭据,而不是服务帐户凭据,它可以正常工作。但这就是问题 - 我真的需要为服务帐户工作。
【问题讨论】:
标签: php google-api google-api-php-client service-accounts google-drive-activity-api