Google API Data Tranfer Insert (Google Drive): говорит, что завершено, но на самом деле ничего не происходит - PullRequest
0 голосов
/ 30 апреля 2018

Я нашел подобную статью здесь, но после большого тестирования я все еще сталкиваюсь с проблемами ( Вставка передачи данных API Google: отсутствует resource.applicationDataTransfer ).

По сути, я пытаюсь передать право собственности на Google Диск другому лицу. Я получил это работает для календарей (в основном тот же код, но разные applicationId), но для диска, он говорит, что он завершен, фактически ничего не перемещая. Я проверил, что все разрешения API правильны, и я даже смог успешно запустить его в Google API Explorer (https://developers.google.com/admin-sdk/data-transfer/v1/reference/transfers/insert?authuser=1).

Есть что-то действительно простое, что я здесь упускаю?

$service = new Google_Service_DataTransfer($client);  // $client is already defined and working properly

$oldUserID = 'oldAccountIdNumberHere';
$newUserID = 'newAccountIdNumberHere';

$driveTransferParams = new Google_Service_DataTransfer_ApplicationTransferParam();
$driveTransferParams->setKey("PRIVACY_LEVEL");
$driveTransferParams->setValue(['SHARED', 'PRIVATE']);

$driveDataTransfer = new Google_Service_DataTransfer_ApplicationDataTransfer();
$driveDataTransfer->setApplicationTransferParams($driveTransferParams);
$driveDataTransfer->applicationId = 'idStringForGoogleDriveAndDocs';

$driveTransfer = new Google_Service_DataTransfer_DataTransfer();
$driveTransfer->setNewOwnerUserId($newUserID);
$driveTransfer->setOldOwnerUserId($oldUserID);
$driveTransfer->setApplicationDataTransfers([$driveDataTransfer]);

$driveResults = $service->transfers->insert($driveTransfer);

Мои возможности для клиента: Google_Service_DataTransfer :: ADMIN_DATATRANSFER, Google_Service_DataTransfer :: ADMIN_DATATRANSFER_READONLY

Заранее спасибо!

1 Ответ

0 голосов
/ 30 апреля 2018

На самом деле, я только что понял это. Были некоторые параметры, которые нужно было передать в массив, и после этого он начал работать правильно. Решение моей проблемы опубликовано ниже на случай, если оно поможет другим людям.

ПРИМЕЧАНИЕ 1. См. Строку setApplicationTransferParams

ПРИМЕЧАНИЕ 2: см. Строку setApplicationId

$service = new Google_Service_DataTransfer($client);  // $client is already defined and working properly

$oldUserID = 'oldAccountIdNumberHere';
$newUserID = 'newAccountIdNumberHere';

$driveTransferParams = new Google_Service_DataTransfer_ApplicationTransferParam();
$driveTransferParams->setKey("PRIVACY_LEVEL");
$driveTransferParams->setValue(['SHARED', 'PRIVATE']);

$driveDataTransfer = new Google_Service_DataTransfer_ApplicationDataTransfer();
$driveDataTransfer->setApplicationTransferParams([$driveTransferParams]);
$driveDataTransfer->setApplicationId(['idStringForGoogleDriveAndDocs']);

$driveTransfer = new Google_Service_DataTransfer_DataTransfer();
$driveTransfer->setNewOwnerUserId($newUserID);
$driveTransfer->setOldOwnerUserId($oldUserID);
$driveTransfer->setApplicationDataTransfers([$driveDataTransfer]);

$driveResults = $service->transfers->insert($driveTransfer);
...