Обновление листа Google с использованием ключа учетной записи службы и php - PullRequest
0 голосов
/ 08 декабря 2018

чтобы обновить лист Google с помощью php api. Я создал ключ servide accout, используя https://console.developers.google.com/apis, и сохранил этот файл в корневой папке, куда я скачал структуру apiclient, используя composer.И поделитесь листом с клиентской электронной почтой, предоставленной в учетной записи службы, и дал ему полный доступ.Ниже приведен код m, используемый для обновления:

<?php

require 'vendor/autoload.php';

$service_account_file = 'credentials.json';

$spreadsheet_id = '13zWB1_uY5CdPGLuSXRWAgD0lE7QVrbTDW_9V5lqdNAY';


$spreadsheet_range = 'Sheet1';

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $service_account_file);
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope(Google_Service_Sheets::SPREADSHEETS);
$service = new Google_Service_Sheets($client);

$options = array('valueInputOption' => 'RAW');
$values = [
["Name", "Roll No", "Contact"],
["AAA", "001", "12345"],
["BBB", "002", "6789"]
];
$body   = new Google_Service_Sheets_ValueRange(['values' => $values]);

$result = $service->spreadsheets_values->update($spreadsheet_id, $spreadsheet_range, $body, $options);
?>

Проблема в том, что он работает нормально на моем локальном хосте.но когда я загрузил папку на 000webhost и запустил ее оттуда, она выдала ошибку, указанную ниже:

Поймано исключение: не удалось загрузить учетные данные по умолчанию.Перейдите к https://developers.google.com/accounts/docs/application-default-credentials для получения дополнительной информации

Нужно ли использовать gcloud .Насколько мне известно, мне не нужно gcloud , чтобы использовать Google API.И если мне нужно использовать gcloud для работы этого кода с моего сайта 000webhost (https://www.000webhost.com).

1 Ответ

0 голосов
/ 08 декабря 2018

Вы используете относительный путь к файлу учетных данных.Вам нужно использовать полный путь.Строка в вашем коде:

$service_account_file = 'credentials.json';

Должна быть изменена на:

$service_account_file = '/mysecrets/credentials.json';

Измените каталог mysecrets, чтобы он был любым.Если это веб-сервер, не размещайте файл в html-каталоге сервера.

Вы также можете указать файл вручную:

$client->setAuthConfig($service_account_file);

И удалить эти строки:

putenv('GOOGLE_APPLICATION_CREDENTIALS=' . $service_account_file); 
$client->useApplicationDefaultCredentials();
...