IE2017

Авторизация OAuth 2.0 из 1С 8.2

Программирование - Практика программирования

Доступ к функциям Google API с помощью авторизации OAuth 2.0

Возникла необходимость связать 1С и Google Calendar.

По мотивам статьи: 

http://pro1c.net/tips/%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-oauth-20-%D0%B8%D0%B7-1%D0%A1-82/

Пример был переделан на управляемые формы и добавлена возможность использовать прокси-сервер.

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

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

Наименование Файл Версия Размер
GoogleCalendar.epf
.epf 10,72Kb
18.02.13
113
.epf 10,72Kb 113 Скачать

См. также

Комментарии
1. Роман Ложкин (webester) 22 24.02.13 09:05 Сейчас в теме
Спасибо, в закладки, пригодится, в приведенном вами источнике говорится что автор не смог заставить 1с работать через ssl и заюзал com объект, как у вас с этим?
2. Кирилл (queit) 59 24.07.13 05:53 Сейчас в теме
Так же как, ssl не взлетает. Причины скрыты очень глубоко и раскопать мне их не удалось.
3. Алексей Ситников (SiAl) 70 23.07.14 00:35 Сейчас в теме
Спасибо.
Одно пожелание (после ознакомления с процедурой
ПолучитьЗначениеJSON
) - выучите регулярные выражения, очень упростится разбор текстов.
4. Кирилл (queit) 59 23.07.14 08:33 Сейчас в теме
(3) SiAl, можно по подробнее. Пример можете привести?
5. Алексей Ситников (SiAl) 70 23.07.14 13:36 Сейчас в теме
(4) queit, пример чего? Использования регулярных выражений? Я просто раньше тоже использовал функции 1С для работы с текстами, и получались огромные портянки вместо процедур. RegExp очень упрощает кодинг при парсинге текстов.
У меня вопрос еще по обработке.
Какая последовательность действии правильна? Я копирую Client id и Client secret, а они через секунду очищаются, я даже не успеваю нажать кнопку Авторизация. Искал в коде, но нет нигде операции присваивания значений (даже пустых) эти полям.
6. Кирилл (queit) 59 24.07.14 09:40 Сейчас в теме
(5) SiAl, Ок, тогда по другому: я не шарю в резулярных выражениях, можете переписать функцию "ПолучитьЗначениеJSON" с использование рег.выражений? Буду рад ознакомиться с реализацией.

На счет того, что Client id и Client secret исчезают. В процедуре "ПриОткрытии" есть такая конструкция "ПодключитьОбработчикОжидания("ОбработкаОповещенияИзменения",2)" - применяется для прохождения 2-го этапа авторизации, вернее для получения кода доступа. Получается, что если за 2 секунды не набрал, то все. Можно время побольше поставить или как-то оптимизировать.
7. zyto (zyto) 13.11.15 15:42 Сейчас в теме
Я правильно понимаю, что полученный маркер:

Маркер = Ответ.Получить("access_token");

Можно использовать для дальнейшей автоматической работы с гуглапи, и снова и снова его получать не нужно?
Или у него есть некий "срок жизни" (а-ля кукисы, которые живут от нескольких секунд до нескольких дней), и через некоторое время надо снова получать этот маркер?
8. Кирилл (queit) 59 13.11.15 21:11 Сейчас в теме
(7) zyto, тайм-аут есть. Если какое-то время ничего не делать, то нужно снова получать.
9. zyto (zyto) 16.11.15 10:03 Сейчас в теме
А есть какой-нибудь другой способ авторизации, что бы пользователю не нужно было каждый раз жать кнопку "Разрешить", т.е. что бы можно было выполнять некий код по расписанию, без участия пользователя.
Или это фантастика?
10. zyto (zyto) 16.11.15 10:17 Сейчас в теме
По моим сугубо субъективным оценкам токен прожил около часа...
11. zyto (zyto) 16.11.15 10:28 Сейчас в теме
В справке гугла есть упоминание про некую оффлайн авторизацию, и токен для обновления токена :)

https://developers.google.com/identity/protocols/OAuth2WebServer#offline

Кто-нибудь пробовал реализовывать такую авторизацию?
12. Кирилл (queit) 59 16.11.15 19:42 Сейчас в теме
(9) zyto, как бы в этом и есть весь смысл двухступенчатой авторизации.
13. Кирилл (queit) 59 16.11.15 19:56 Сейчас в теме
(11) zyto, такое пока не делал. Нет прикладной задачи пока :-)
14. В Золотухин (zolotukhin) 08.02.16 12:20 Сейчас в теме
Возможно ли скачать эту обработку где-то еще?
15. Кирилл (queit) 59 08.02.16 19:24 Сейчас в теме
(14) zolotukhin, могу на почту скинуть
zolotukhin; +1 Ответить 1
16. В Золотухин (zolotukhin) 14.02.16 00:05 Сейчас в теме
(15) queit, очень бы выручили, огромное спасибо. vasilii.zolotukhin@gmail.com
17. Дмитрий Деулин (dimasts) 22 24.03.17 20:34 Сейчас в теме
Токен устарел и обработка стала бесполезной, даже поэкспериментировать не успел.
Ребят, подскажите, как быстро допилить её, чтобы она обновила токен.
Если не сложно :)
пока не очень силен я в get-запросах
18. Дмитрий Деулин (dimasts) 22 24.03.17 20:35 Сейчас в теме
(17)Пересоздание проекта в консоли гугла и получение новых ключей не помогает.
19. Дмитрий Деулин (dimasts) 22 24.03.17 20:43 Сейчас в теме
(18)удаление куки и истории браузера не помогло
20. Кирилл (queit) 59 27.03.17 05:26 Сейчас в теме
Полезность обработки сохраняется вне зависимости от токена.
Токен вы сами должны получить в вашем гугл-профиле.
21. Дмитрий Деулин (dimasts) 22 03.04.17 17:37 Сейчас в теме
Дело не в этом. Токен устарел и его надо было обновить. Этого механизма в обработке не предусмотрено.
Также очень много нагорожено с расшифровкой JSON-строк.
Переписал всё сам заново, обработка заняла одну страницу.
Непонятно зачем было столько городить, и не сделать самого необходимого.
Как шаблон для собственных экспериментов тоже не подходит, очень много лишнего.
Оставьте свое сообщение