Авторизация OAuth 2.0 в API Google и получение access token для сервисной учетной записи, не требует подтверждения пользователя

Публикация № 805071

Разработка - Системная интеграция - Интеграция с WEB

Google API OAuth 2 JWT access token криптография цифровая подпись RSA PEM токен закрытый ключ сертификат ключа Google spreadsheets Гугл таблицы

14
Обработка получает google api access token методом two-legged OAuth (2LO), это вариант сервер-сервер с цифровой подписью, когда не требуется подтверждение пользователя. Заполняет гугл-таблицу через API. При ее работе также происходит парсинг закрытого RSA-ключа PEM, результат парса выводится в форму.

Пока в интернете я встречал только описание использования из 1С "Трехногого OAUth" (three-legged OAuth), где вызов API идет от имени конечного пользователя и обычно требуется подтверждение пользователя. Способ на мой взгляд длинноватый, поэтому я решил вызвать из 1Ски по-человечески двуногую авторизацию: "two-legged OAuth," или "2LO". Делал на платформе 8.3.10.2168, протестировал также на 8.3.11.3034. Добавлено 17.07.2018: вариант обработки для платформы 8.3.9 (проверено на 8.3.9.2033 и 8.3.9.2233)

Речь идет о модели авторизации, описанной:
краткое описание с картинкой - https://developers.google.com/identity/protocols/OAuth2#serviceaccount
подробное - https://developers.google.com/identity/protocols/OAuth2ServiceAccount

Этот способ требует создания и криптографического подписывания JSON Web Tokens (JWT). На данный момент встроенным Менеджером Криптографии 1ска не умеет подписывать SHA256 хеш, а гугл другого не приемлет. Изначально я использовал COM-объект System.Security.Cryptography.RSACryptoServiceProvider. Он работал как надо, но смущало, что в документации не написано, что он так умеет (в опциях метода SignHash отсутствует вариант SHA256). Для гарантии, что будет работать на другом компьютере, я решил вычислить цифровую подпись "вручную" обычной арифметикой, которую достойно выдержала 1С. Примечательно, что при этом она оперирует десятичными 309-значными числами, и подпись вычисляет за пару секунд. Триста девять - это не опечатка, вот например, значение одной из переменных типа Число, используемых при вычислении:

502 980 391 062 131 532 641 704 729 356 208 435 540 985 711 615 837 230 131 224 218 031 451 499 103 580 000 500 
042 512 824 109 317 254 211 102 144 888 404 960 708 248 565 484 714 907 166 675 270 791 229 966 881 267 979 216 
170 431 549 149 990 776 636 979 550 241 423 110 985 244 106 352 654 087 401 423 069 254 226 452 760 694 752 994 
636 816 447 756 286 216 072 699 194 804 391 178 250 315 913 588 444 283 437

На 8.3.9 вычисляет дольше, но тоже за приемлемое время - похоже, используются не все ядра процессора.

Обработка получает токен от имени сервисной учетной записи моего тестового проекта. Scope запрашивается только для API spreadsheets. Для демонстрации работоспособности полученного токена, из формы обработки можно изменить столбец тестовой гугл-таблицы, а затем по указанному на форме обработки адресу посмотреть результат.

Для получения токенов на api spreadsheets от имени Вашего сервис-аккаунта, необходимо в консоли разработчика https://console.developers.google.com создать/скачать JSON-ключ сервисного аккаунта с доступом к api spreadsheets, и указать его в поле обработки "Путь файла ключа json". Токен своей учетки Вы получите, но при попытке изменить мою тестовую таблицу с таким токеном гугл вернет error 403 "PERMISSION_DENIED", поскольку у Вашего сервис-аккаунта нет доступа к моей таблице.

При воспроизведении в своей работе аналога продемонстрированного механизма не забудьте прописать нужные Вам "scope" в коде обработки и соответствующие API при запросе у гугла json-ключа. Также не забудьте расшарить доступ к объектам гугла, которые Вы хотите изменять или читать через API. Доступ нужно предоставлять емейлу Вашей сервисной учетной записи. Этот емейл можно найти внутри json ключа, в значении свойства "client_email", либо в моей обработке указать путь к Вашему JSON-ключу и нажать кнопку "разобрать сертификат". Емейл отобразится в поле "Расшарить для емейла".

Важный момент: в операционной системе должно быть правильное время и правильный часовой пояс (используется функция 1с УниверсальноеВремя), иначе обработка запросит у гугла неверные дату начала и окончания срока действия токена, как следствие токен не выдадут, в ответе будет что-то со словом time. Если правильные системное время и пояс устанавливать не хотите - тогда нужно в модуле формы указать свой алгоритм расчета времени для переменной ВремяИстеченияUTC. Учитывайте, что в данной схеме авторизации гугл выдает токены максимум на час, затем нужно получать новый токен.

Для разбирающихся в криптографии. Цифровая подпись арифметически вычисляется с использованием SHA256withRSA (RSASSA-PKCS1-V1_5-SIGN with the SHA-256 hash function). Для этого в процессе обработки средствами 1С происходит парсинг закрытого RSA-ключа в формате PEM, BASE64 которого содержится в сертификате JSON. На вкладке "Парс сертификата json" в дерево выводится результат парсинга, и в ветке дерева "OCTET STRING" содержится SEQUENCE, в котором перечислены INTEGER - параметры закрытого и открытого ключей: Version, Modulus, publicExponent (Exponent, E), privateExponent (D), prime1 (P), prime2 (Q), exponent1 (dP или d mod (p-1)), exponent2 (dQ или d mod (q-1)), coefficient (InverseQ или InvQ или (inverse of q) mod p).

14

Скачать файлы

Наименование Файл Версия Размер
(8.3.10 и 8.3.11) Авторизация OAuth 2.0 в API Google и получение access token для сервисной учетной записи, не требует подтверждения пользователя:
.epf 20,47Kb
17.07.18
26
.epf 1.0 20,47Kb 26 Скачать
(8.3.9) Авторизация OAuth 2.0 в API Google и получение access token для сервисной учетной записи, не требует подтверждения пользователя:
.epf 21,03Kb
17.07.18
1
.epf 1.0 21,03Kb 1 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. uginx 11.07.18 06:52 Сейчас в теме
2. uginx 12.07.18 16:40 Сейчас в теме
а не подскажете как добавлять строку в конец листа?

у меня на такую строку
/v4/spreadsheets/1u3hBxBn0hHfOOyJ6TjLzsji58SPP3ttNyRN31xTgUk­E/values/Sheet2:append?valueInputOption=USER_ENTERED
ругается с кодом 404

а так
/v4/spreadsheets/1u3hBxBn0hHfOOyJ6TjLzsji58SPP3ttNyRN31xTgUk­E/values/Sheet2?valueInputOption=USER_ENTERED
работает, но записывает с начала листа
3. uno-c 93 12.07.18 20:01 Сейчас в теме
Здравствуйте. Если нужно добавить новую дополнительную пустую строку (т.е. на странице последняя строка, в которую можно что-то записать была 969я, нужно, чтоб появилась 970я строка), то нужно использовать POST по адресу https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate, при этом в теле нужно передать JSON {"requests": [ { "appendDimension": { "sheetId": sheetId, "dimension": "ROWS", "length":1}}]} https://developers.google.com/sheets/api/samples/rowcolumn#append_empty_rows_or_columns
4. uginx 13.07.18 06:31 Сейчас в теме
(3) спасибо! поменял HTTPСоединение.Записать на HTTPСоединение.ОтправитьДляОбработки
5. uno-c 93 13.07.18 10:54 Сейчас в теме
Отлично!

Конечно же, важно не путать методы HTTPСоединение (HTTPConnection):
Записать (Put)
ОтправитьДляОбработки (Post)
Получить (Get)
6. kasper076 48 28.11.18 15:45 Сейчас в теме
Реально работает. Спасибо.
7. kasper076 48 29.11.18 10:15 Сейчас в теме
В данном примере сертификат содержится в файле формата JSON. А если сертификат в файле cer, как тогда можно достать закрытый ключ?
8. uno-c 93 29.11.18 12:07 Сейчас в теме
(7)В .cer обычно только открытый ключ. Google выдавал еще .p12 - из него ключи можно достать например через powershell.
$cert = New-Object system.security.cryptography.x509certificates.x509certificate2
$pat="d:\UNSAFE\dell\mySert.p12"
$password="notasecret"
$flags = "UserKeySet,Exportable"
$cert.Import($pat, $password, $flags)
$myXml = $cert.PrivateKey.ToXmlString($True)
$myXml | Out-File "d:\UNSAFE\dell\FromPower.xml"
Ключи и параметры для ускоренного расчета будут видны в файле FromPower.xml, ими можно вычислять цифровую подпись для гугла.
9. kasper076 48 30.11.18 10:00 Сейчас в теме
(8) Некорректно сформулировал свой вопрос. Вот тут ты используешь COMОбъект("System.Security.Cryptography.RSACryptoServiceProvider") для подписи файла по алгоритму RSA-sha256. А в обработке из этой темы СОМ-объект не используется. Возможно ли только средствами 1С подписать и поверить подпись RSA-sha256, если сертификат лежит в файле cer?
10. uno-c 93 30.11.18 11:42 Сейчас в теме
(9)Если закрытый ключ содержится в файле - думаю можно, т.к. у эски есть инструменты для работы с двоичными данными. Но повторю, в .cer как правило нет закрытого ключа, нужен .pfx или .p12.
11. kasper076 48 30.11.18 11:56 Сейчас в теме
(10) pfx тоже есть. Но при экспорте из хранилища сертификатов был запрошен ввод пароля. На Хабре прочитал, что это дополнительная защита закрытого ключа, сам файл pfx шифруется с помощью этого пароля.
Я попробовал разобрать файл cer используя алгоритм из обработки. Но результат получился не корректным. Получились классы не входящие в формат ASN.1
Прикрепленные файлы:
12. uno-c 93 30.11.18 13:03 Сейчас в теме
(11)Шифруется потому что содержит закрытый ключ. Значит, если сильно хочется эской - нужно разбирать и расшифровывать ). Посмотрел пару закрытых ключей в pfx - они зашифрованы 3DES SHA-1. Но это совсем для 1с-гурманов ). Менеджер криптографии вроде только с асимметричным шифрованием работает, т.е. придется алгоритм расшифровки вручную прописывать, если хочется без COM или Native.
13. kasper076 48 30.11.18 13:28 Сейчас в теме
(12) Ну мы не такие :-) . Решили прост отказаться от RSA-sha256. Нам нельзя использовать сторонние библиотеки.
14. uno-c 93 30.11.18 14:22 Сейчас в теме
(13)Да, средствами эски расшифровывать закрытый ключ из pfx неоправданно трудоемко будет. Разве что для какой-нибудь дипломной работы - из теоретического интереса решить задачку.
15. Cyberhawk 115 29.07.19 12:01 Сейчас в теме
В чем отличие между двумя вложениями?
16. uno-c 93 29.07.19 13:21 Сейчас в теме
(15)Здравствуйте! В версии (8.3.9) дописаны некоторые функции для работы с двоичными данными, которые отсутствуют в платформе 8.3.9. Если версию обработки 8.3.9 запустить на более поздних платформах - то будет ругаться из-за конфликта имен функций встроенных в платформу и написанных мной, тогда нужно просто удалить область
#Область Для_8_3_9
// в 8.3.10 эти функции встроены в платформу

&НаСервере
Функция ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер)
...
#КонецОбласти
17. Cyberhawk 115 29.07.19 13:58 Сейчас в теме
(16) Благодарю за ответ и за публикацию
18. skyboy13 10 25.09.19 11:09 Сейчас в теме
Про SHA256 в 1С, это соответственно АлгоритмХеширования. Что-то у него даже описания нет....
19. uno-c 93 25.09.19 11:26 Сейчас в теме
(18)Вы имеете в виду описание в СП МенеджерКриптографии-АлгоритмХеширования-SHA256? Выше в статье я писал "На данный момент встроенным Менеджером Криптографии 1ска не умеет подписывать SHA256 хеш, а гугл другого не приемлет." В СП его нет, но можно обратиться к любому модулю криптографии Новый МенеджерКриптографии(<ИмяМодуляКриптографии ...), потом .
ПолучитьИнформациюМодуляКриптографии(), и в нем есть массив .АлгоритмыХеширования - там найдете полный перечень алгоритмов хеширования, с которыми справится 1С платформенными средствами, SHA256 пока там отсутствует.
20. ivanovkpd 03.10.19 13:25 Сейчас в теме
Добрый день.

Я немного соптимизировал, как мне кажется, генерацию JSON для передачи на гугл
Во первых, использую метод batchUpdate, он позволяет избавиться от необходимости указания range в url, во вторых ф-я глобального контекста ЗаписатьJSON, позволяет избавиться от вложенного цикла.

Функция ДжонИзМассива(Знач Масс, Рэйнж, Знач НачСтрока = 1,
		Знач НачКолонка = 1, Знач Лист = "Лист1") Экспорт

	Данные = Новый Структура();
	ValueRange = Новый Структура();
	Колонок = Масс.количество();
	Строк = Масс[0].Количество();
	Рэйнж = СтрШаблон("%1!%2:%3", Лист, НотацияА1(НачКолонка, НачСтрока), НотацияА1(НачКолонка
		+ Колонок + 1, НачСтрока + Строк + 1));

	ValueRange.Вставить("range", Рэйнж);
	ValueRange.Вставить("majorDimension", "COLUMNS");
	ValueRange.Вставить("values", Масс);

	Данные.Вставить("valueInputOption", "USER_ENTERED");
	Данные.Вставить("data", ValueRange);

	Джсон = Новый ЗаписьJSON();
	Джсон.УстановитьСтроку();
	ЗаписатьJSON(Джсон, Данные);
	Возврат Джсон.Закрыть();
КонецФункции
Показать
21. uno-c 93 03.10.19 14:40 Сейчас в теме
(20)Здравствуйте! Цель этой обработки - получить access token. Гугл-таблица в ней заполняется лишь для проверки работоспособности полученного токена. ЗаписатьJSON и ПрочитатьJSON глобального контекста - да, как правило удобней и лаконичней эти функции использовать.
22. ivanovkpd 03.10.19 15:24 Сейчас в теме
(21) Да я ж не спорю! Она мне ОЧЕНЬ помогла, хоть и промучился несколько дней из-за невнимательности своей :)

Я не вам в упрек ни в коем случае.
24. uno-c 93 03.10.19 16:48 Сейчас в теме
(22)Я к тому, что вдруг кто будет читать перед тем, как скачать эту обработку. Обработка позволит не тратить время на изучение нудной процедуры получения токена. Плюс она отвязана от операционной системы, работает на линуксе, т.к. не использует обращение к криптопровайдеру через COM для вычисления цифровой подписи, а вычисляет сама чистой арифметикой. Но дальнейшее использование полученного токена - это уже предмет других примеров-обработок.
23. ivanovkpd 03.10.19 15:28 Сейчас в теме
(21) Кстати обнаружил неприятный нюанс - Googe Sheet API не понимает JSON-format даты/времени.

Посему, перед применением ЗаписатьJSON приходится все даты конвертить в строки, все в тех же мерзких циклах. :(
25. uno-c 93 03.10.19 17:30 Сейчас в теме
(23)В спецификации JSON отсутствует дата, отсюда и проблема. Т.е. нету такого понятия, как "JSON-format даты/времени". RFC7159:
JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).

Использующие обмен данными в формате JSON сами принимают решение, как передавать даты в форме строки. В 1С есть три встроенных варианта для этого - например в функциях глоб.контекста ПрочитатьДатуJSON(...) ЗаписатьДатуJSON(...) - ISO, JavaScript, Microsoft. В глоб.контекст. ЗаписатьJSON - тоже третьим параметром можно передать настройки сериализаци, в том числе для даты с тремя этими вариантами. Но google sheets api, видимо, какой-то четвертый формат использует )
26. ivanovkpd 04.10.19 09:23 Сейчас в теме
(25) а вот настройки сериализации я что-то не попробовал, спасибо.
Гугл принимает dd-MM-yyyy HH:mm:ss, если стоит параметр USER_ENTERED, а RAW я не пробовал :)
(24) Не, обработка просто шикарная! 100500й раз спасибо вам :) Вы, по-моему вообще единственный кто реализовал 2-leg авторизацию.
27. uno-c 93 04.10.19 09:39 Сейчас в теме
(26)
а RAW я не пробовал :)
Судя по инструкции гугла, можно и не пробовать ):
RAW The values the user has entered will not be parsed and will be stored as-is.
USER_ENTERED The values will be parsed as if the user typed them into the UI. Numbers will stay as numbers, but strings may be converted to numbers, dates, etc. following the same rules that are applied when entering text into a cell via the Google Sheets UI.
В JSON либо строка либо число, других вариантов в данном случае нет. И в случае RAW - все останется как есть - строкой или числом.
28. uno-c 93 04.10.19 09:42 Сейчас в теме
(26)
100500й раз спасибо вам :)
А Вам спасибо за отзыв !
29. Cthulhu 09.10.19 14:02 Сейчас в теме
(20)
упс. выглядит красиво (я так понял в вывод (начиная с А1 в целевой гугл-таблице) кидается содержимое Масс.
тупой вопрос: а как собственно Масс формируется для таб.документа (или области)?..
прим:
30. Cthulhu 09.10.19 14:09 Сейчас в теме
спасибо!
тупые (снова, уж извините) вопросы.
а как именно "взаимоувязываются" линк на гугл-таблицу с кодом? в смысле - где и как в коде указывается, что именно эта таблица правится через api?..
33. Cthulhu 09.10.19 17:55 Сейчас в теме
(32) о тут уже оказывается отрезан обмен сообщениями - тупо редирект в телегу и прочее (которого у меня нет).
спасибо, добрый человек. надеюсь автор топикстартер извинит за диалог тут.
1) понятно что в константе - непонятно что оно (ТабИД) собой представляет и как его получить...
2) вижу у тебя тупо ТЗ выгоняется в гугль-шит? а как таб.документ?
35. ivanovkpd 09.10.19 18:43 Сейчас в теме
(33)
Мне табДокумент не нужен, я выгружаю в гугль результаты запроса.
Я думаю ТабДок проще гнать сразу в массив, без ТЗ. И, скорее всего, просто циклами.

Я еще почему с ТЗ заморочился и с массивом "по столбцам", у меня выгружается таблица > 50к строк. Гнать ее вложенными циклами, по моему мнению, менее эффективно, чем через "ВыгрузитьКолонку" хотя я и не тестировал. Но! даты приходится конвертировать в строку после выгрузки колонки. Глупый Гугд не принимает дату в ISO.
34. uno-c 93 09.10.19 18:27 Сейчас в теме
(32)Нехило Вы этак, весь мой авторский код "криптопровайдера" спалили.
ivanovkpd; Cthulhu; +2 Ответить
36. Cthulhu 11.10.19 15:21 Сейчас в теме
извините, снова тупые вопросы (пытаюсь пере-до0пилить немного под себя)
1. Проект создан, в "Бибилиотека" подключены API googlesheets и googledrive
2. Учетные параметры выглядят вот так (аттач).
сначала запутался - который json и как выгружать... с горем пополам выгрузил тот, который обработка съела (на другой ругалась).
3. от этой же учетки (в которой создан проект) - создал и сохранил гугль-таблицу. доступ - всем на всё (потом буду экспериментировать с ограничениями, дошло).
4. из джсона - разобрать сертификат - получил для себя мыло (далее использую его).
5. получить токен -
4. для этой гугль-таблицы, с мылом из разобранного сертификата - сгенерировать токен.
5. список листов - получаю запросом с этим токеном+мылом без проблем (с любым токеном, вообще-то - но это наверное из-за полного расшаривания).
6. попытка загнать данные в эту таблицу (на первый лист, с #gid=0) с этими же (своим!) токеном и (своим!) мылом - error 403 "PERMISSION_DENIED".
Прикрепленные файлы:
37. Cthulhu 12.10.19 11:24 Сейчас в теме
(36)
прим.: не на токен ругается...
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
-- файл создан под тем аккаунтом, в который выполнен вход, и расшарен максимально, на весь инет (редактирование)
а может где-то в консоли какой-нибудь можно посмотреть - кто лез через апи к файлу?
38. uno-c 93 12.10.19 11:44 Сейчас в теме
(37)Думаю, стОит попробовать шаг-в-шаг повторить действия, описанные в статье, т.к. они позволяют редактировать таблицу. А уж потом экспериментировать с доступами "всем на всё" и проч.
40. ivanovkpd 13.10.19 14:36 Сейчас в теме
(38) Ну таки да, я делал, у меня работает :)
Да, еще момент, насколько я понял, учетка в которой живет таблица должна быть для частного лица, иначе все эти АПИ вроде бы платные.
41. Cthulhu 15.10.19 09:51 Сейчас в теме
(40)
ааагрррхх... учетка, конечно же (мне ж не для домашней булгахтерии эта вся беда нужна...) - корпоративная.....
42. uno-c 93 15.10.19 10:59 Сейчас в теме
(41)
корпоративная
Cthulhu если есть возможность - отпишитесь пжл., действительно ли дело в корпоративной учетке было. Если на корпоративную таблицу дать доступ емейлу корпоративного сервис-аккаунта - то все равно "PERMISSION_DENIED"?
43. ivanovkpd 15.10.19 11:01 Сейчас в теме
(42) Да, у меня так. я тоже начал с бизнес-учетки.
Потом по итогу просто сделал отдельную "частную".
44. Cthulhu 15.10.19 18:43 Сейчас в теме
(42)
отписываюсь.
*** Вошел в личный аккаунт (не корпоративный).
1.1. Создал API-ключ сервисного аккаунта (сохранение json-файла на локал).
1.2. Создал новый гугль-шит, максимально расшарил (доступен всем на все).
2. Запустил обработку (подпиленную, адрес гугль-шита в текстовое поле ввода, e-mail в коде - из поля ввода).
2.1. Выбрал json-файл из п.1.1.
2.2. "Разобрать сертификат", "Получить токен" == "Подпись верна: Да"
2.3. Вбил свой адрес гугль-шита (из п.1.2).
2.4. "Отправить Столбец в гугл" == "Успешно" (и столбец в моем гугл-шите (см.п.1.2) изменился как заказано.
*** Вошел в корпоративный аккаунт.
пп.1.1-2.3, повторил в полном объеме с аналогичными результатами (все Ок).
2.4. "Отправить Столбец в гугл" == { "error": { "code": 403, "message": "The caller does not have permission", "status": "PERMISSION_DENIED" } }
47. ivanovkpd 16.10.19 09:40 Сейчас в теме
(44) Да-да, все точно так. с корпоративной не работает. Денег наверное надо дать. ну или они там дают пробник вроде на год.
39. ivanovkpd 13.10.19 14:34 Сейчас в теме
(36) Я так думаю в настройках доступа к таблице у тебя не указан в явном виде имейл сервис-аккаунта
45. Cthulhu 15.10.19 18:56 Сейчас в теме
(39)
я в коде заменил - вместо явного указания он тянется из соответствующего поля ввода (которое пере-вычисляется по "разобрать сертификат").
46. ivanovkpd 16.10.19 09:39 Сейчас в теме
(45) Речь не про код 1С, а про доступ в гугле. У таблицы явно должен быть разрешен доступ томы "мылу", что зашито в JSON, при гнереации сервис-аккаунта
48. Cthulhu 16.10.19 23:37 Сейчас в теме
(46)
т.е. ты имеешь ввиду, что по мылу, указанному в json-файле API-ключа сервисного аккаунта - нет доступа к API? по-моему это бред, извини...
49. uno-c 93 17.10.19 00:29 Сейчас в теме
(48)Имелось в виду, что возможно у API особый подход к разрешениям для сервисных аккаунтов - т.е. возможно "все для всех" на них не всегда распространяется, и например, сервисному емейлу обязательно нужно персональное разрешение на редактирование таблицы. Но, судя по Вашему весьма полезному эксперименту в (44) - проблема была исключительно в "корпоративности" учетки.
50. ivanovkpd 17.10.19 07:49 Сейчас в теме
(48) сервисной учетке разрешение на Sheets API дано?
Бред или не бред, но у ТС и у меня работает. Значит, надо где-то у тебя искать. Вот мы и пытаемся нащупать проблему.
51. uno-c 93 17.10.19 08:16 Сейчас в теме
(50)Уже ведь выяснили, что проблема исключительно в корпоративной учетке, Cthulhu специально для этого эксперимент провел (44). Корпоративку ему отбивало "PERMISSION_DENIED", но когда он сделал из личной учетки - то "и столбец в моем гугл-шите (см.п.1.2) изменился как заказано."
52. Cthulhu 17.10.19 16:14 Сейчас в теме
(50)
в обеих учетках "api включен" для "google drive" и для "google sheets".
Оставьте свое сообщение

См. также

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью Rest API сайта. Часть 1. Авторизация 37

Статья Программист Конфигурация (md, cf) v8 Windows Абонемент ($m) WEB

Интеграция 1С с сайтом (магазином) WordPress (WooCommerce) с помощью функционала Rest API предоставляемого платформой (CMS) WordPress (WooCommerce). Без дополнительных приложений на PHP/вставьте сюда любой другой язык программирования/.

1 стартмани

12.10.2019    2033    5    osivv    27       

Telegram бот на 1С 39

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Telegram бот на 1С в виде внешней обработки, встраиваемой в типовые 1С 8.3.

1 стартмани

24.09.2019    3564    11    budidich    15       

Выгрузка номенклатуры в социальную сеть Вконтакте 30

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Оптовая торговля Розничная торговля Абонемент ($m) WEB

Обработка для быстрой и легкой выгрузки товаров Вконтакт. Так просто еще не было)))

2 стартмани

14.08.2019    2204    11    kalyuzhny    20       

Путеводитель по истории релизов 36

Отчеты и формы Системный администратор Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) WEB

Отчет по истории выпуска релизов и анализа информации по обновлениям.

2 стартмани

13.08.2019    2619    7    YPermitin    15       

Подключение к сайту и отправка или получение данных по API (POST, GET...) (с описанием кода) 27

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Простая обработка по отправке или получение данных с любого сервера главное знать ресурс (выполняемую функцию) и тело запроса.

1 стартмани

12.08.2019    2753    4    MaxPowerr    5       

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery с кэшированием 94

Статья Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) WEB

В статье описан способ создания "фронтенда" на HTML/CSS/jQuery и скрипт кеширования AJAX запросов на PHP.

1 стартмани

06.08.2019    4852    6    Sedaiko    22       

Конфигурация для обмена данными (интеграционная шина) 23

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Windows Абонемент ($m) Внешние источники данных WEB

Система позволяет организовать обмен данными, как с базами 1С, так и любыми другими приложениями. Система представляет собой отдельную конфигурацию. Система позволяет организовать гибкие возможности по настройке обмена. В качестве брокера сообщений, для передачи данных, используется отдельная самостоятельная конфигурация на 1С. Комплект поставки содержит файл расширения для "клиентской" части шины, данное расширение позволяет без снятия "ключа" организовать гибкий механизм обмена данными.

4 стартмани

08.07.2019    3103    15    miha-28    14       

Шаблон http-сервиса для вашего проекта 70

Инструменты и обработки Программист Архив с данными v8 v8::Mobile 1cv8.cf Абонемент ($m) Внешние источники данных WEB Мобильная разработка

Http-сервис для обмена данными в формате JSON. Обработчики этого сервиса находятся во внешней обработке, что позволяет дорабатывать его без изменения конфигурации. Также прилагаю пример мобильного приложения для работы с данным сервисом (получает номенклатуру и остатки на складе). Сервис очень быстро разворачивается и масштабируется под ваши задачи.

2 стартмани

04.05.2019    6084    49    MarkoSokolov    47       

1C + Python + Django Rest Framework + Vue.js. Опыт несложной full-stack разработки 121

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных Обмен через XML WEB Разработка

В этой статье мы рассмотрим путь и основные моменты создания небольшого вэб-сервиса, который мы называем "Онлайн Прайс-лист". Выгрузка из 1С, бэкенд, фронтенд, получение заказов в 1С.

1 стартмани

22.04.2019    16068    14    riposte    63       

1С и WebKit. Вариант взаимодействия 46

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) WEB

В результате перехода на WebKit тип свойства Документ у поля, имеющего вид ПолеHTMLДокумента, изменился с COMОбъект на ВнешнийОбъект. Также изменилась DOM модель документа, доступная через это свойство.

2 стартмани

23.02.2019    9958    29    mi1man    35       

Строим маршруты на картах в 1С с помощью OpenStreetMap, OSRM и Leaflet 74

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Транспорт, автопарки, такси Абонемент ($m) WEB

Краткая статья о том как вывести на карту (в 1С) маршруты с помощью OpenStreetMap, OSRM и Leaflet. По данной системе очень мало примеров, но так как OpenStreetMap является бесплатным сервисом и не требует никаких ключей и регистраций, и является довольно мощным механизмом, решил написать небольшую статью "как это сделать?". В первую очередь скажу, все намного проще, если вы используете последнюю версию платформы (8.3.14), где есть поддержка практически всех браузеров (IE 11, EDGE, Mozilla), но что делать если у нас не самая свежая платформа, где поддержка только IE 9?

2 стартмани

12.02.2019    9167    51    Ditron    15       

Яндекс карта в документе "Заказ клиента" на закладке "Доставка". (Расширение) УТ 11.4 28

Инструменты и обработки Пользователь Расширение (cfe) v8 УТ11 Россия УУ Оптовая торговля Абонемент ($m) Обработка документов WEB

Показ яндекс карты в документе "Заказ клиента" на закладке "Доставка" и печать карты для курьера с контактными данными. (Расширение)

3 стартмани

05.02.2019    3818    11    ret    6       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 514

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    25587    245    bonv    108       

Яндекс карты 2.1. Построение маршрута. Передача длины маршрута в реквизит формы 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Пригодится как пример использования Яндекс карты 2.1 для построения маршрута.

1 стартмани

24.01.2019    4728    43    John_d    26       

Проверка VAT номеров 2

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Обработка для вызова сервиса проверка VAT номера.

1 стартмани

26.11.2018    3772    wtlz    0       

Веб-форма авторизации/регистрации/восстановления пароля для веб-клиента 1С с помощью HTML/CSS/PHP/HTTP-сервисов 1С 27

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Абонемент ($m) WEB

Пришла в голову идея создать универсальную веб-форму входа в веб-клиент 1С на HTML/CSS/PHP/HTTP-сервисы 1С. Чтобы прямо как на нормальных сайтах. Заодно и для ознакомления с 1С с новой, для себя, стороны. Интересно было попробовать интеграцию PHP - 1С.

1 стартмани

08.11.2018    7524    20    Бэнни    15       

Загрузка чека онлайн-касс (загрузка товаров из чека) 38

Инструменты и обработки Системный администратор Программист Бухгалтер Внешняя обработка (ert,epf) v8 1cv8.cf Кассовые операции Розничная торговля Абонемент ($m) Внешние источники данных WEB

Обработка-пример, позволяет любому и из любой конфигурации загрузить информацию о товарах из чека(и не только) с сервера ФНС proverkacheka.nalog.ru

2 стартмани

08.10.2018    7328    23    echo77    32       

Работа с публикациями "Инфостарт" 13

Инструменты и обработки Программист Архив с данными v8 УУ Абонемент ($m) Практика программирования О сообществе WEB

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    8335    10    RocKeR_13    12       

SOAP для чайников 86

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Обмен через XML WEB

Немножко про SOAP сервис. И пример работы с подключением и получением данных по SOAP за 5 минут.

1 стартмани

05.09.2018    18711    25    dusha0020    18       

Класс-обработка “Работа с картами Яндекс” 58

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Разработка внешних компонент WEB

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    10712    129    RSConsulting    13       

HTTP Сервисы: Путь к своему сервису. Часть 1 260

Статья Системный администратор Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Практика программирования WEB

Уже много было написано про http-сервисы, но то и дело всплывают «Новые» статьи по обмену между базами V8 по COM, что «Немножко» удивляет. Решил внести свои 5 копеек, поработаем с http-сервисом.

1 стартмани

15.07.2018    35562    15    dsdred    22       

Пример использования REST API Яндекс Диска 33

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Пример использования REST API Яндекс Диска: чтение диска, добавление каталога, загрузка файла, скачивание файлов или каталогов, удаление файлов или каталогов.

1 стартмани

26.06.2018    12482    23    MKFreeUser    12       

Обмен файловыми базами данных через Yandex диск 7

Инструменты и обработки no Приложение (exe) v8 Россия Windows Абонемент ($m) WEB

Выполнение операций обмена с Yandex диском для файловых БД, по протоколу WebDav, в автоматическом или ручном режимах.

1 стартмани

11.06.2018    9923    6    slimper    1       

Чтение сжатого gzip, deflate HTTP ответа сервера. Без ВК. Уменьши время загрузки и сократи трафик в 3 раза 69

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

В платформе 1С:Предприятие не реализовано штатного механизма декодирования ответа веб серверов, в которых присутствует gzip сжатие. Некоторые использовали WinHttpRequest.5.1 , кто-то писал ВК. Друзья, хватит. Вот вам решение.

1 стартмани

08.06.2018    8108    45    Malfarion    14       

Конфигурация для просмотра публичных телеграм каналов 10

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) WEB

Просмотр и каталогизация в более удобном виде публичных телеграм каналов, групп и чатов.

1 стартмани

02.06.2018    9971    7    DO_WHILE_LOOP    7       

Простой эмулятор вызова веб-сервиса 1С с просмотром результата 24

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Обмен через XML WEB

Последнее время все чаще сталкиваюсь с разработкой веб-сервисов средствами 1С. Для ускорения разработки и отладки написал внешнюю обработку. На какой-то сверх-крутой функционал она не претендует, но, может, кому-то пригодится.

1 стартмани

24.04.2018    7397    17    anvolkov1cbit    9       

Интеграция между Atlassian Jira и 1С:Предприятие 8.3 используя Jira REST API (выборка, создание и изменение запросов, чтение, создание и удаление записей о работах, чтение комментариев и другие возможности) 80

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Внешние источники данных WEB

Внешняя обработка на управляемой форме для 1С:Предприятие 8.3 по интеграции с Atlassian Jira используя Jira REST API. Ключевые функции: выборка запросов с использованием JQL; добавление и изменение запросов; добавление, изменение и удаление записей о работах; чтение комментариев к запросам; сохранение всех ключевых параметров между сеансами работы. Тестирование проводилось на платформе 1С (8.3.11.2954) совместно с JIRA Server platform (7.3.7)

1 стартмани

24.04.2018    16971    113    Ko1t    63       

Простая и пошаговая интеграция Яндекс-Алисы и 1С 76

Инструменты и обработки Программист Конфигурация (md, cf) v8 Windows Абонемент ($m) WEB

Интеграция Алисы и 1С через http сервис на платформе 8.3.9. Используем виртуальный сервер, сертификат от letsencrypt, и делаем простые запросы к базе из Алисы.

1 стартмани

09.04.2018    14941    15    kiv1c    33       

Чтение и запись из таблиц гугл (google sheets) в табличный документ 1С (8.3, управляемые формы) 148

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Внешние источники данных WEB

Внешняя обработка на управляемой форме для 1С версии 8.3 для доступа к сервисам Google Sheets c использованием протокола авторизации OAuth 2.0. Выполняет получение списка листов таблицы гугл, чтение таблицы гугл в табличный документ 1С и запись из табличного документа 1С в таблицу гугл. Тестирование проводилось на платформе 1С:Предприятие 8.3 (8.3.11.2954).

1 стартмани

09.04.2018    21408    164    Ko1t    50       

Внешняя компонента для работы по Web-socket протоколу 21

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент WEB

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

6 стартмани

30.03.2018    13025    9    Ditron    62       

2 в 1: Проверить действительность паспорта / Получить ИНН по паспорту 38

Инструменты и обработки Бухгалтер Внешняя обработка (ert,epf) v8 v8::УФ ERP2 БП3.0 ЗУП3.x Россия БУ Управление персоналом (HRM) Абонемент ($m) Обработка справочников WEB

Представляю вашему вниманию внешнюю обработку заполнения элемента справочника "Физические лица". Обработка выполнена с использованием API (для работы необходим доступ в интернет), содержит полностью открытый код и 2 команды: Проверка документа, удостоверяющего личность, в списке недействительных паспортов и Заполнение ИНН по паспортным данным.

1 стартмани

27.02.2018    11611    124    VladimirElohov    33       

Построение маршрута доставки с расчётом расстояния для любой базы УФ 56

Инструменты и обработки Руководитель проекта Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Оптовая торговля Абонемент ($m) Универсальные обработки WEB

Графическое изображение маршрутного листа по картам гугл. Работает на любой конфигурации с управляемыми формами. Использует новую версию api google-карт от 13.02.2018 года под IE11.

10 стартмани

24.02.2018    18607    36    KorotkovRV    16       

А чё это вы здесь делаете, а? 142

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Разработчикам тиражных обработок близка и понятна проблема обратной связи с пользователем. Много важного и полезного можно почерпнуть, зная, что делает бухгалтер, который запустил обработку. В большом мире вэба сбор статистики на сайте дело привычное и даже обязательное. Эта статья покажет практику применения инструментов сбора статистики из мира веба для обработок на платформе 1С:Предприятие.

1 стартмани

21.01.2018    16626    28    infosoft-v    42       

Пример заполнения/создания файла XML из XSD схемы, используя XDTO 128

Статья Программист Документ XML v8 1cv8.cf Абонемент ($m) Обмен через XML WEB

Добрый день, коллеги! Наконец-то дошли руки написать сию статью. Хочу поделиться своим опытом по разбору xsd схемы используя Фабрику XDTO, а также связанным с этим XML файлом. Думаю, наверняка кому-то понадобится.

1 стартмани

21.12.2017    28747    40    sandybaev    23       

Сервер push сообщений “Push0k“ 18.05 12

Инструменты и обработки no Архив с данными v8 1cv8.cf Абонемент ($m) WEB

Аналог других “мессенджеров“. Позволяет практически все то же самое, что и другие решения. За исключением смайлов, эмодзи, голосовой и видео связи. Основное отличие от других решений, открыта и доступна для изменения серверная и клиентская часть месенджера. Общедоступной серверной части нет, за серверную часть отвечаете вы сами.

1 стартмани

19.12.2017    10453    11    PloAl    20       

Проверка орфографии средствами Yandex Speller 78

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные обработки WEB

Проверка орфографии средствами Yandex Speller с опциями и коррекцией ошибок. Возможность вызова как с сервера, так и с клиента (с последующим исправлением).

1 стартмани

09.11.2017    13123    50    🅵🅾️🆇    38       

Веб-сервисы 1С и PHP 31

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Украина Windows Абонемент ($m) WEB

Пример создания веб-сервиса на 1С, использование пагинации в запросах 1С, примеры кода на php - передача параметров, получение и разбор данных.

1 стартмани

20.10.2017    18610    41    serg1234    12       

Ведение локального каталога обработок с Инфостарт 67

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные обработки WEB

Обработка наводит порядок в ваших скачанных и локально хранимых обработках с Инфостарта. Это особенно удобно тем коллегам, которые уже скачали немалый объем обработок и хотят получить удобный инструмент навигации по списку.

1 стартмани

06.10.2017    18370    55    rpgshnik    48       

Подсистема Вики - интеграция 1С и сайта под управлением MediaWiki 90

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) WEB

Редактирование статей сайта Mediawiki из 1С. Формирование функционального описания конфигурации на сайте Вики.

1 стартмани

19.09.2017    20588    31    shmalevoz    18       

Отправка HTTP запроса из 1С на сайт. 25

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) WEB

Задача: Передать данные из 1С на сайт. Данные будут передаваться в PHP скрипт, через HTTP запрос, вызываемый из 1С.

1 стартмани

07.05.2017    43641    67    sm2701    14       

Web сервис 1С 24

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Универсальные функции

Пример реализации простого web сервиса. Особенность: не используются XDTO пакеты, определяемые в дереве конфигураций; возможность передачи любых структур данных: списки значений, таблицы значений, табличные документы и т.п.

1 стартмани

21.03.2017    22308    74    hiduk    33       

Разбор адреса на составляющие с помощью Яндекс API и Google API 44

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Универсальные обработки WEB

Есть адрес строкой, а нужно разбить его на составляющие? Для этого не обязательно писать собственный код, пользуемся Яндекс API и Google API.

1 стартмани

10.02.2017    17907    95    Ivon    22       

Передача большого количества объектов через Web-сервисы 43

Статья Программист Внешняя обработка (ert,epf) v8 УТ11 Абонемент ($m) WEB

Один из вариантов передачи большого количества объектов при использовании Web-сервисов.

1 стартмани

31.01.2017    12409    6    SinglCOOLer    14       

JSON парсер для профессиональных разработчиков 51

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Россия Абонемент ($m) WEB Инструментарий разработчика Практика программирования

Описана методика создания парсеров json-файлов для любой конфигурации 1С. Приложена тестовая конфигурация и обработки-парсеры для обычного и управляемого приложений. Материал предназначен для разработчиков на базе 1С, занимающихся вопросами автоматизации бизнес процессов, обмена данными, сопряжения 1С с web-сайтами и сервисами.

4 стартмани

09.01.2017    19491    33    O-Planet    29       

Telegram bot. Обработка для управления ботом 24

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные обработки Внешние источники данных WEB

Может быть основой для ваших ботов, или если нужно создать быстро бота и управлять. Так как управление из 1С, вы можете писать боту разные команды для получения данных из базы. Обработка работает целиком на клиенте, без серверных вызовов! Это очень полезно, для развития максимальных скоростей. Настройки хранятся в каталоге пользователя. Тестировалась на 8.3.8, тонкий клиент, для любых конфигураций.

1 стартмани

14.11.2016    8107    46    silberRus    10       

Подключение к Яндекс.Диску через REST API 29

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) WEB

Эта обработка позволит подключить вашу конфигурацию к Яндекс.Диску. В ней есть графический интерфейс, поэтому можно проверить работоспособность до встраивания обработки в конфигурацию.

1 стартмани

14.11.2016    11064    71    vitaliy1911    11       

Работа с двоичными данными на примере чтения файлов изображений. Новые возможности 8.3.9 110

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB

В статье приводятся новые функции по работе с двоичными данными, появившимися в версии платформы 8.3.9 , на примере анализа формата и размера изображений. А также пример отправки изображения через API ВКонтакте с помощью новых объектов (без использования ОбъединитьФайлы())

1 стартмани

14.11.2016    18454    16    Anton64    22