Я использую php google client для работы с электронными таблицами, чтобы записать некоторые данные в электронные таблицы.Это работало в течение года или около того, но вдруг это перестало работать и начало выкидывать ошибки.После отладки я обнаружил, что он показывает некоторую ошибку, связанную с reCAPTCHA.На скриншоте ниже показано, как это выглядит.
https://prnt.sc/lsxeth
Мой процесс - это cronjob, и он будет выполняться каждую минуту.Во время этого процесса в электронную таблицу происходит много операций чтения и записи.Я не могу понять, почему выдается ошибка reCAPTCHA и как ее предотвратить.Это никогда не случалось раньше.Пожалуйста, поделись своими мыслями.Мой пример кода приведен ниже:
<?php
ob_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
set_time_limit(0);
require_once 'google-api-php-client/autoload.php';
use Google\Spreadsheet\DefaultServiceRequest;
use Google\Spreadsheet\ServiceRequestFactory;
use Google\Spreadsheet\SpreadsheetService;
const CLIENT_APP_NAME = 'spreadsheetdemo';
const CLIENT_ID = 'a working id';
const CLIENT_EMAIL = 'a working email';
const CLIENT_KEY_PATH = 'a working p12 key file';
const CLIENT_KEY_PW = 'notasecret';
$objClientAuth = new Google_Client();
$objClientAuth->setApplicationName(CLIENT_APP_NAME);
$objClientAuth->setClientId(CLIENT_ID);
$objClientAuth->setAssertionCredentials(new Google_Auth_AssertionCredentials(
CLIENT_EMAIL,
array('https://spreadsheets.google.com/feeds', 'https://docs.google.com/feeds'),
file_get_contents(dirname(__FILE__) . '/' . CLIENT_KEY_PATH),
CLIENT_KEY_PW
));
$objClientAuth->getAuth()->refreshTokenWithAssertion();
$objToken = json_decode($objClientAuth->getAccessToken());
$accessToken = $objToken->access_token;
$serviceRequest = new DefaultServiceRequest($accessToken);
ServiceRequestFactory::setInstance($serviceRequest);
$spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
$spreadsheetTitle = 'AwesomeSpreadsheet';
$spreadsheetFeed = $spreadsheetService->getSpreadsheetFeed(); // Error happens at this line.
$spreadsheet = $spreadsheetFeed->getByTitle($spreadsheetTitle);
?>
Я получил ошибку скриншота при использовании метода try catch
try {
$spreadsheetFeed = $spreadsheetService->getSpreadsheetFeed();
} catch (\Exception $e) {
print_r($e->getMessage());
}
В противном случае в error_log будет показано следующее сообщение -
"Неустранимая ошибка PHP: необработанное исключение" Google \ Spreadsheet \ Exception \ BadRequestException "