Аутентификация и использование электронной таблицы Google в качестве базы данных для веб-приложения
Похоже, вокруг этой темы много вопросов, но ни один из них не отвечает на мой вопрос. У меня есть простой веб-сайт с формой регистрации, и когда пользователи вводят свою электронную почту, я хочу добавить ее в качестве новой строки в электронной таблице Google, которую я уже настроил. Я не хочу, чтобы пользователь проходил аутентификацию или даже знал об этой таблице. Как пройти аутентификацию, чтобы я мог начать использовать Google API? Код / псевдокод будет принята с благодарностью! Вот несколько примеров, которые не отвечают на мой вопрос:
Использование Google Spreadsheet в качестве БД для приложений
2 ответа
Вот ссылка на библиотеку для доступа к таблицам Google:
https://github.com/EastCloud/node-spreadsheets
Примечание: я на самом деле не использовал эту библиотеку
Вам нужно будет использовать PHP и библиотеку Zend GData.
Когда вы публикуете свою форму в своем PHP-скрипте, вам нужно собрать все переменные в ассоциативный массив, который вы затем передадите методу insertRow в Zend_Gdata_Spreadsheets.
Важно отметить, что ваша таблица должна содержать заголовки столбцов, чтобы мой пример работал. Например, Имя / Фамилия, и важно отметить, что когда вы нацеливаетесь на эти заголовки столбцов в скрипте, они должны быть все в нижнем регистре и лишены пробелов, потому что именно так их ожидает электронная таблица.
Вот основной пример скрипта PHP:
<?php
$errors = array(); // use this to create an associative array to json encode and send back any errors
$rowData = array(); // this will be the associative array that gets passed to the insertRow method
$firstName = $_POST['firstName'];
if(isset($firstName)){
$rowData['firstname'] = $firstName; // note the key 'firstname' must equal the column header in your spreadsheet which you are inserting the value into. the column header name key should be all lowercase and not contain spaces regardless of if you have it in the spreadsheet
}else{
$errors['firstname'] = '1';
}
$lastName = $_POST['lastName'];
if(isset($lastName)){
$rowData['lastname'] = $lastName; // note the key 'lastname' must equal the column header in your spreadsheet which you are inserting the value into. the column header name key should be all lowercase and not contain spaces regardless of if you have it in the spreadsheet
}else{
$errors['lastname'] = '1';
}
set_include_path($_SERVER['DOCUMENT_ROOT'] . '/library/');
$spreadsheetKey = 'your-spreadsheet-key';
$worksheetId = 'your-worksheet-id'; // if you only have one worksheet this will be 'od6'
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);
$user = "your-user-name-at-gmail-dot-com";
$pass = "your-password";
$service = Zend_Gdata_Spreadsheets::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$spreadsheetService = new Zend_Gdata_Spreadsheets($client);
$query = new Zend_Gdata_Spreadsheets_DocumentQuery();
$query->setSpreadsheetKey($spreadsheetKey);
$feed = $spreadsheetService->getWorksheetFeed($query);
global $spreadsheetService,$spreadsheetKey,$worksheetId,$rowData;
$insertedListEntry=$spreadsheetService->insertRow($rowData,$spreadsheetKey,$worksheetId);
$returnObject['success'] = 'true';
echo(json_encode($returnObject));
?>
Дайте мне знать, если это работает для вас.