Google API 数据传输插入:缺少 resource.applicationDataTransfer

Google API Data Transfer Insert: missing resource.applicationDataTransfer

我正在创建简单的 PHP 脚本,用于在同一域中的用户之间转移驱动器文件的所有权。我想使用 Admin SDK TransfersInsert 方法。

Google 有关于传输的文档 here

我尝试通过他们的网页 GUI 传输数据,一切顺利。我不能做的是如何让它与 PHP 客户端库一起工作。

假设我已经准备好创建对 Transfers 资源的请求的对象

$transfers = new \Google_Service_DataTransfer($googleConnection);

googleConnection 处理服务帐户授权,因此我可以发出这样的请求:

$data = $this->transfers->transfers->listTransfers();

此 returns 域中所有现有传输的数据。根据文档和 PHP 客户端库插入操作也应该有效。

$transferParams = new \Google_Service_DataTransfer_ApplicationTransferParam();
    $transferParams->setKey("PRIVACY_LEVEL"); //what kind of docs I want to transfer
    $transferParams->setValue(['SHARED', 'PRIVATE']);

    $appDataTransfer = new \Google_Service_DataTransfer_ApplicationDataTransfer();
    $appDataTransfer->setApplicationTransferParams($transferParams);

    $appDataTransfer->applicationId = "iDString";    //set application ID

    $newTransfer = New \Google_Service_DataTransfer_DataTransfer();

    $newTransfer->setOldOwnerUserId('accountID'); //origin account IDs are placeholders
    $newTransfer->setNewOwnerUserId('account2ID'); //destination account
    $newTransfer->setApplicationDataTransfers($appDataTransfer);

    $result = $this->transfers->transfers->insert($newTransfer); //execute insert

执行插入后,我收到代码 400,消息中缺少必填字段:[resource.applicationDataTransfer]。

如果我通过网络测试真实参数,它们就可以工作。 我一定是遗漏了什么,因为那个例外根本没有意义。

我也愿意接受其他解决方案。

setApplicationDataTransfers 方法需要一个 Google_Service_DataTransfer_DataTransfer 数组,因此您只需要更新以下行(注意参数中的 [])

$newTransfer->setApplicationDataTransfers([$appDataTransfer]);