Хотите добавить новую запись / строку в таблицу Google в Stack Overflow

Я хочу добавить новые записи в таблицу Google с помощью php-кодирования. Я искал и нашел решение, которое использовало gmail id и систему паролей для аутентификации. Первоначально он работал, но через 2 дня он внезапно перестал работать. Код был как указано ниже:

<?php

include 'spreadsheet.php';
$Spreadsheet = new Spreadsheet("[email protected]", "xxxxxxx");
$Spreadsheet->setSpreadsheet("Tester")->setWorksheet("Sheet1")->add(array("First Name" => "Cell 1", "Last Name" => "Cell 2"));

?>

После того, как он перестает работать, я узнал, что Google изменил свою систему входа в систему, и мне нужно перейти на систему Oauth для аутентификации.

После долгого R & Я нашел один пример —https://github.com/asimlqt/php-google-spreadsheet-clientMsgstr «. Но это не сработало, и после того, как я прочесал различные источники поиска, я разработал следующий код:

<?php

include_once "google-api-php-client/examples/templates/base.php";

/************************************************
Make an API request authenticated with a service
account.
************************************************/
require_once realpath(dirname(__FILE__) . '/google-api-php-client/src/Google/autoload.php');

$accessToken = getGoogleTokenFromKeyFile("XXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXX");

use Google\Spreadsheet\DefaultServiceRequest;
use Google\Spreadsheet\ServiceRequestFactory;

//ServiceRequestFactory::setInstance(new DefaultServiceRequest($accessToken));

// Load spreadsheet and worksheet
$worksheet = (new Google\Spreadsheet\SpreadsheetService())
->getSpreadsheets()
->getByTitle('Sheet1')       // Spreadsheet name
->getWorksheets()
->getByTitle('Tester');      // Worksheet name
$listFeed = $worksheet->getListFeed();

// Uncomment this to find out what Google calls your column names
// print_r($listFeed->getEntries()[0]->getValues());

// Add a new blank row to the spreadsheet, using the column headings
$listFeed->insert(['name' => 'Simon', 'age' => 25, 'gender' => 'male']);

/**
* Retrieves a Google API access token by using a P12 key file,
* client ID and email address
*
* These three things may be obtained from
* https://console.developers.google.com/
* by creating a new "Service account"*/
function getGoogleTokenFromKeyFile($clientId, $clientEmail, $pathToP12File) {
$client = new Google_Client();
$client->setClientId($clientId);

$cred = new Google_Auth_AssertionCredentials(
$clientEmail,
array('https://spreadsheets.google.com/feeds'),
file_get_contents($pathToP12File)
);

$client->setAssertionCredentials($cred);

if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}

$service_token = json_decode($client->getAccessToken());
return $service_token->access_token;
}


?>

Но, к сожалению, этот также не работает, и после внезапного таймфрейма он показывает ошибку тайм-аута запроса на моем локальном сервере xampp.

И до даты моя заявка приостановлена. На самом деле не уверен, что делать сейчас. Если у кого-то есть какое-то конкретное решение против этого, пожалуйста, поделитесь со мной. Моя главная цель — добавить данные в электронную таблицу Google, когда пользователь отправит свои данные на мой сайт. Или, если это невозможно после изменения Google в системе аутентификации, пожалуйста, подтвердите меня тоже. Я хочу достичь окончательного решения этой проблемы.

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

1

Решение

Если вы можете получить действительный токен, то передайте токен в заголовке запроса с помощью «Bearer yourtokenstring». Google недавно изменил это с «GoogleLogin auth = yourtokenstring». Вместо этого используйте тег Bearer.

Если вы пытаетесь получить действительный токен доступа, попробуйте использовать служебную учетную запись с файлом ключа p12. Предоставьте права на изменение вашей электронной таблицы на адрес электронной почты учетной записи службы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]