Отправка запросов нескольким различным API в одном пакете - PullRequest
0 голосов
/ 19 октября 2018

Я получил по электронной почте сообщение о том, что в моем облачном проекте Google использовались глобальные пакетные конечные точки HTTP, которые должны быть отключены 25 марта 2019 года.

После некоторого исследования я нашел что-то, что может иметь отношение здесь ,

"То, что больше не поддерживается, это отправка запросов нескольким различным API в одном пакете ... "

Так что я подозреваю, что это потому, чтомоего кода здесь, в Google Cloud Project:

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Sheets::SPREADSHEETS);
$client->addScope(Google_Service_Drive::DRIVE);
print_r($client);

//create new spreadsheet
$sheetService = new Google_Service_Sheets($client);
$requestBody = new Google_Service_Sheets_Spreadsheet([
                  'properties' => [
                      'title' => $new_sheet_title
                  ]
               ]);
$response = $sheetService->spreadsheets->create($requestBody);
$spreadsheetId = $response->spreadsheetId;

$driveService = new Google_Service_Drive($client);

$client->setUseBatch(true);
$batch = $driveService->createBatch();

$userPermission = new Google_Service_Drive_Permission(array(
                      'type' => 'user',
                      'role' => 'writer',
                      'emailAddress' => 'mypersonalemail@gmail.com'
                  ));
$request = $driveService->permissions->create(
              $spreadsheetId, $userPermission, array('fields' => 'id'));
$batch->add($request, 'user'); 
$results = $batch->execute();  
$client->setUseBatch(false); 

//then no longer using Drive API, only using Sheet API to do formatting...

Когда я печатал свой клиент $_r (), я увидел это:

[requestedScopes:protected] => Array
    (
        [0] => https://www.googleapis.com/auth/spreadsheets
        [1] => https://www.googleapis.com/auth/drive
    )

Я использую Google SheetAPI для создания электронных таблиц и использование Drive API для разрешения доступа к моей личной электронной почте (ну, почему я так использовал, это другая история ...) Кстати, я использую Клиентская библиотека Google (v2.2.1) php beta

Так что я думаю, что мне нужно сделать

$client = new Google_Client();
$client->useApplicationDefaultCredentials();

//using setScopes to overwrite original scopes
$client->setScopes(Google_Service_Sheets::SPREADSHEETS);
$sheetService = new Google_Service_Sheets($client);
//create my spreadsheet

$client->setScopes(Google_Service_Drive::DRIVE);
$driveService = new Google_Service_Drive($client);
//allow permission to my personal email

//then set it back & do formatting to my spreadsheet
$client->setScopes(Google_Service_Sheets::SPREADSHEETS);
$sheetService = new Google_Service_Sheets($client);

...

Я проверил и наверняка он работает

Итак, мой вопрос:
1.Какая часть моего кода отправляет пакетный запрос в API Sheet и Driver?Когда я проверяю свой запрос на пакетное обновление, не было найдено ни одного запроса на вызов обоих API.(см. здесь )

2.Я не уверен, что мой новый скрипт решит проблему.Поскольку сервис еще не отключен Google, поэтому я не уверен, что мой новый скрипт продолжит работать после 25 марта 2019 года

. Надеюсь, я четко изложил свою озабоченность.Не стесняйтесь спрашивать более подробную информацию.Заранее спасибо:)

1 Ответ

0 голосов
/ 19 октября 2018

Ваш код, похоже, отправляет пакетный запрос на API-интерфейс Google Drive.

$client->setUseBatch(true);
$batch = $driveService->createBatch();

$userPermission = new Google_Service_Drive_Permission(array(
                      'type' => 'user',
                      'role' => 'writer',
                      'emailAddress' => 'mypersonalemail@gmail.com'
                  ));
$request = $driveService->permissions->create(
              $spreadsheetId, $userPermission, array('fields' => 'id'));
$batch->add($request, 'user'); 
$results = $batch->execute();  
$client->setUseBatch(false); 

Все ваши запросы в этом пакетном запросе, похоже, отправляются на API-интерфейс Google Drive.Я не вижу никаких признаков того, что вы смешиваете apis в этом вообще.Изменение не повлияет на вас.

...