Работа над подсистемой онлайн-аккаунтов (учётных записей)#

Подсистема онлайн-аккаунтов состоит из следующих компонентов:

  • 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 аутентификации для приложений на Qt

    • signon-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

На этом этапе повторите операцию, в которой произошел сбой, и Вы получите все выходные данные отладки, выведенные в консоль.