php клиент электронной таблицы Google выдает ошибку recaptcha - PullRequest
0 голосов
/ 10 декабря 2018

Я использую 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 "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...