Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
В последних версиях Зенки реализована возможность подключения и работы с Гугл таблицами. Не у всех получается сразу подключить их по инструкции, потому, записал видео по подключению, возможно кому-то будет полезно.
В конце, что-то заглючила Зенка, перестала подтягивать данные, возможно надо было подольше подождать, не обращайте внимания)
Нет никакого глюка, если изменения в таблице были произведены не из ZennoPoster, потребуется несколько минут для её обновления.
Чтобы не ждать, можно использовать кнопку "Перезагрузить таблицу".
Нет никакого глюка, если изменения в таблице были произведены не из ZennoPoster, потребуется несколько минут для её обновления.
Чтобы не ждать, можно использовать кнопку "Перезагрузить таблицу".
это общие таблицы получается. с любого сервака легкий доступ к данным. если БД локально еще более менее легко поднять и можно юзать, то администрировать и давать доступ к сетевой базе, да еще спрятавшейся за NAT с файрволом и динамическим IP.... ну тут надо много знаний по администрированию системы. а гугл таблицами все просто.
а еще да, легкий выгруз для клиента. напарсил данных, сформировал отчет и отправил ссылку клиенту. ну это я очень приближенно
Все равно для нескольких копий зеннопостера их не получиться использовать из-за задержек, данные будут теряться! Так что я для себя смысла в них не вижу!
Все равно для нескольких копий зеннопостера их не получиться использовать из-за задержек, данные будут теряться! Так что я для себя смысла в них не вижу!
не норм. как раз вести общую базу. я для себя давно уже завел правило разделять таблицы на хранящие данные и таблицы постоянно обновляющиеся. при крахе, зенки, системы таблицы хрянящие данные вообще не страдают. а те которые перезаписываются автоматом пересоздаются если обнаруживается что они недоступны. так и гугл будет. в гугле будут общие базы, а работать боты будут с локальными. результат будет сваливаться в отдельные гугл таблицы . если грамотно подойти в самом начале разработки расширяемой системы, то проблем не будет.
Возвращаясь к теме. Да, я так и не смог настроить доступ по АПИ к таблицам Гугла) 3 года назад смог и даже других учил как это делать.
Пробовал с разных аккаунтов, в строгом соответствии с инструкцией (да и по сути это не сервер настраивать, проще некуда), и даже с этим видео, изучил там всё, но безрезультатно.
Уже стало очень интересно найти причину появления проблемы на которую я убил не один час.
Заметил, что вот у меня на стадии авторизации приложения только одно приложение предлагается разрешить.
Вероятно причина где-то там. Но как заставить запрашивать два приложения, второе "Просмотр метаданных файлов..." - непонятно.
Возвращаясь к теме. Да, я так и не смог настроить доступ по АПИ к таблицам Гугла) 3 года назад смог и даже других учил как это делать.
Пробовал с разных аккаунтов, в строгом соответствии с инструкцией (да и по сути это не сервер настраивать, проще некуда), и даже с этим видео, изучил там всё, но безрезультатно.
Уже стало очень интересно найти причину появления проблемы на которую я убил не один час.
Заметил, что вот у меня на стадии авторизации приложения только одно приложение предлагается разрешить.
Вероятно причина где-то там. Но как заставить запрашивать два приложения, второе "Просмотр метаданных файлов..." - непонятно.
Условно, подключение можно разделить на два этапа.
1. Включение нужных апи, в данном случае это Google Drive Api и Google Sheets Api.
2. Добавление разрешений или "областей действия", по английски вроде как это называется scopes.
В зависимости от того, какие разрешения включены, зависит что можно делать через апи. Сделано для того, чтобы не давать доступа больше чем надо.))
Судя по скринам выше, надо разблокировать это
У меня там разблокированы другие разрешения(нет замков), делалось не для доступа к таблицам через зенку, а под другие задачи.
Именно так. И я мучил эти scopes несколько дней. Те что без замочков в основном, в разных комбинациях, потому что с замочками нужны какие-то подтверждения.
Оставим без обсуждения почему не в инструкциях, не в видео ТС нет никаких упоминаний про изменения этих областей и всё прекрасно работает и без них.
Я пытался составить URL примерно в таком формате: https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id={-Variable.client_id-}&scope={-Variable.scope-}&redirect_uri={-Variable.uri-}
Но всегда при добавлении в URL более одного scope (пытался в основном через запятые типа https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive.file,https://www.googleapis.com/auth/drive
получал: Error: invalid_scope
Но всегда при добавлении в URL более одного scope (пытался в основном через запятые типа https://www.googleapis.com/auth/spreadsheets,https://www.googleapis.com/auth/drive.file,https://www.googleapis.com/auth/drive
получал: Error: invalid_scope
Попробуй через пробел.
И добавляешь лишнее. scopes - это типа какими апи будет пользоваться твоя прога. scope=https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive
А какие ты разрешения ей навключал при получении ключей, это увидишь когда будешь переходит по этому урлу и подтверждать запрос.
Да, и еще не забудь добавить в урл этот параметр - access_type=offline
If you are not using a client library, you need to set the access_type HTTP query parameter to offline when redirecting the user to Google's OAuth 2.0 server.
In that case, Google's authorization server returns a refresh token when you exchange an authorization code for an access token.
Then, if the access token expires (or at any other time), you can use a refresh token to obtain a new access token.
Теперь надо отправить этот код, со своими апи ключами - clientId и clientSecret.
В ответ придет json, со всей нужной инфой.
C#:
var scopes = new List<string>()
{
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/drive"
};
var code = "код который получили";
var redirectUri = "<redirect_uri>";
var scopeStr = string.Join(" ", scopes);
var clientId = "<client_id>";
var clientSecret = "<client_secret>";
var body = string.Format(
"code={0}&" +
"redirect_uri={1}&" +
"scope={2}&" +
"grant_type=authorization_code&" +
"client_id={3}&" +
"client_secret={4}",
code,
redirectUri,
scopeStr,
clientId,
clientSecret);
var response = ZennoPoster.HttpPost(
"https://oauth2.googleapis.com/token",
System.Net.WebUtility.UrlEncode(body),
"application/x-www-form-urlencoded",
"",
"utf-8",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
15000);
Надо просто понять, зачем вся эта муть делается, и тогда все уложится в голове.
Есть Вася, он супер-рогер, и решил сделать супер-прогу, которая использует различные фишки гугла.
Есть Петя. Вася хочет дать ему свою прогу, чтобы он ее юзал.
1. Вася получает апи ключи, делает супер-прогу и дает ее Пете.
2. При первом запуске гугл спрашивает у Пети, готов ли он дать разрешение на то чтобы прога Васи что то делала с его акком.
Это первый запрос, который редиректит Васю на форму авторизации гугла.
3. Если все ок, в ответ приходит код, сделанный под ключи Васи и под акк Пети.
Второй запрос - получение токенов, с помощью которых прога Васи, под управлением Пети будет общаться с сервисами гугла и что то делать на его акке.
Токены сохраняются(access_token и refresh_token ), и потом используются, чтобы Пете каждый раз не приходилось давать разрешения.
Вообще ручками этот код никуда обычно не вбивается. И в ручную эти запросы не отправляются.
Например у гугла есть либы, для удобного работа с их сервисами.
При запросе разрешений, поднимается локальный http сервер, на который потом редиректится(это вот который параметр redirect_uri) ответ от гугла с кодом.
Сервак его принимает, отсылает запрос, в ответ получает токены, и сохраняет их. Пользователь даже этого не замечает, и ему не приходиться возиться с запросами.
UPD: Касаемо гугл таблиц в ZP это все делать не надо(запросы). По идее все должно делаться автоматом.
Надо только получить апи ключи, вбить в настройках ZP путь к файлу с апи ключами и дать нужные разрешения.
В том-то всё и дело, что я даже 7-ку специально поставил, но при загрузке json с секретами в настройках ZP вылезало виндовое окно - что-то типа не поддерживается платформа.
Какая именно платформа - непонятно. Может Windows 7 уже устарела.
Ух, сработало! Токен получен. Спасибо огромное, квест выполнен, правда я уже забыл зачем мне эти чертовы таблицы понадобились))
В том-то всё и дело, что я даже 7-ку специально поставил, но при загрузке json с секретами в настройках ZP вылезало виндовое окно - что-то типа не поддерживается платформа.
Какая именно платформа - непонятно. Может Windows 7 уже устарела.
UPD: Касаемо гугл таблиц в ZP это все делать не надо(запросы). По идее все должно делаться автоматом.
Надо только получить апи ключи, вбить в настройках ZP путь к файлу с апи ключами и дать нужные разрешения
Все перемешалось в голове.
Есть опция при работе с таблицей "привязать к URL" и есть "Вставьте ссылку на Гугл Таблицу" в интерфейсе настройки Google-таблицы, в чем разница между ними?
Тогда я могу создать Гугл таблицу по АПИ и привязать ее соответствующим Табл-кубиком, не указывая ее в интерфейсе настройки Google-таблицы .
Есть опция при работе с таблицей "привязать к URL" и есть "Вставьте ссылку на Гугл Таблицу" в интерфейсе настройки Google-таблицы, в чем разница между ними?
Апну тему, чтобы новые не плодить.
Подключил API, но авторизация гугла отваливается через через несколько дней (5-7, точно не замерял).
приходится заходить в настройки зенно и переподключать тот же самый токен, опять давать разрешения.
Как исправить, чтобы не отваливалось?
Апну тему, чтобы новые не плодить.
Подключил API, но авторизация гугла отваливается через через несколько дней (5-7, точно не замерял).
приходится заходить в настройки зенно и переподключать тот же самый токен, опять давать разрешения.
Как исправить, чтобы не отваливалось?
Аналогичная проблема. Выдает ошибку в логах даже через 2-3 дня: "Ошибка выгрузки данных Google таблиц. Повторный запрос через 1 минуту. An error occurred while sending the request." Помогает только удаление и переподключение того же токена.
Но тут еще постоянно появялется ошибка в процессе подключения к токену на последнем шаге, которая перебрасывает на не рабочий "http://localhost:51649/authorize/?c... https://www.googleapis.com/auth/spreadsheets" вместо надписи как в инструкции "Received verification code. You may now close this window"
При этом в итоге гугл таблицы все-равно подключаются и работают после этой ошибки.
Аналогичная проблема. Выдает ошибку в логах даже через 2-3 дня: "Ошибка выгрузки данных Google таблиц. Повторный запрос через 1 минуту. An error occurred while sending the request." Помогает только удаление и переподключение того же токена.
Такая же проблема, причем гугл-таблицы подключаются, все хорошо, какое-то количество строк корректно записывается, ошибок в логе нет, но затем высвечивается такая ошибка и запись строк на 1 минуту прекращается.
Аналогичная проблема. Выдает ошибку в логах даже через 2-3 дня: "Ошибка выгрузки данных Google таблиц. Повторный запрос через 1 минуту. An error occurred while sending the request." Помогает только удаление и переподключение того же токена.
Такая же проблема, причем гугл-таблицы подключаются, все хорошо, какое-то количество строк корректно записывается, ошибок в логе нет, но затем высвечивается такая ошибка и запись строк на 1 минуту прекращается.
Посчитайте количество строк до ошибки и поставьте паузу на одну минуту в цикле. Так вы и на ошибку не нарвётесь и данные запишите.
Вы пользуетесь api для google таблиц. Логично, что у них есть ограничения на обращения к серверу. Иначе бы сервера постоянно падали.)