Работа над подсистемой онлайн-аккаунтов (учётных записей)#
Подсистема онлайн-аккаунтов состоит из следующих компонентов:
Accounts UI: здесь предоставляются пользовательские компоненты и базовые классы для всей подсистемы онлайн-аккаунтов. Более подробно смотрите подкаталоги:
click-hooks
: программа запускается, когда устанавливается или удаляется приложение Click, позволяющее использовать функционал онлайн-аккаунтовclient
: библиотека, которую клиентские приложения могут использовать для запроса доступа к учетной записиonline-accounts-service
:основной сервис, реализующий логику обработки клиентских запросов; у него нет пользовательского интерфейса, но он может прикрепить «online-accounts-ui» поверх пользовательского интерфейса приложенияonline-accounts-ui
: пользовательский интерфейс, который появляется, когда приложения взаимодействуют с онлайн-аккаунтами (например, диалоговое окно, которое появляется, когда приложение запрашивает доступ к аккаунту)plugins
: базовые классы и элементы QML, которые могут использовать в своей реализации плагины аккаунтовsystem-settings-plugin
: пользовательский интерфейс для панели Аккаунтов в приложении «Системные настройки»
Плагины учётной записи (Account plugins) задают провайдеров учетных записей и реализуют пользовательский интерфейс и логику для создания учетных записей
Набор компонентов из проекта Accounts&SSO: пока разработка происходит в этих основных проектах, сообщество UBports делает форк соответствующих пакетов Debian. Эти проекты:
libaccounts-glib: API управления учетными записями для приложений на C/GLib
libsignon-glib: API аутентификации для приложений C/GLib
libaccounts-qt: API управления учётными записями для приложений на Qt
signond: демон аутентификации, открывающий API D-Bus. Содержит библиотеку
libsignon-qt
, предлагающую API аутентификации для приложений на Qtsignon-plugin-oauth2:плагин OAuth (версии 1.0 и 2.0) для signond
accounts-qml-module API аутентификации и управления учётными записями для приложений QML (может также использоваться при реализации плагинов учетной записи)
Сервис account-polld service, который работает в фоновом режиме и каждые 5 минут проверяет активность новой учетной записи (интервал определяется сервисом Ubuntu Push service)
Сервис account-polld-plugins-go, репозиторий плагинов для сервиса
account-polld
. Плагины в этом репозитории написаны на Go, но плагины могут быть написаны на любом языке и могут находиться в разных репозиториях
Отладка#
Ошибки, связанные с созданием учётной записи#
Может случиться так, что создание учетной записи не удастся, либо из-за проблем со связью с удаленным сервером, либо из-за какой-либо ошибки в самом плагине учетной записи (это легко может произойти при разработке нового плагина). Для отладки таких ситуаций можно открыть терминал (это проще, если сделать это из remote shell - на устройстве это можно сделать с помощью Shell access via ADB или Shell access via SSH) и запустить в режиме отладки online-accounts-service
:
pkill online-accounts-service
OAU_LOGGING_LEVEL=2 OAU_DAEMON_TIMEOUT=9999 online-accounts-service
Если вы считаете, что проблема может быть вызвана некоторыми ошибками на этапе аутентификации, вы также можете включить расширенное ведение логов с помощью signond
:
pkill signond
export SSO_LOGGING_OUTPUT="stdout" # signond logs to the syslog by default
SSO_LOGGING_LEVEL=2 SSO_DAEMON_TIMEOUT=9999 signond
На этом этапе повторите операцию, в которой произошел сбой, и Вы получите все выходные данные отладки, выведенные в консоль.