Используя Учетные записи Онлайн для аутентификации против моего сервера

В моем приложении QML Ubuntu я пытаюсь использовать учетные записи онлайн для аутентификации против моего сервера. Я немного смущен относительно того, как я должен пойти о выполнении этого. В конечном счете я хочу, чтобы пользователь смог войти в систему с их Facebook/Google/человечностью, который каждый считает. После чтения немного о OpenID и OAuth я думаю, что должен использовать одного из них для этого.
До сих пор в моем приложении я использую Ubuntu пользователя Одна учетная запись для аутентификации как это:

import QtQuick 2.0
import Ubuntu.Components 1.1
import Ubuntu.Components.ListItems 1.0 as ListItem
import Ubuntu.OnlineAccounts 0.1
import Ubuntu.OnlineAccounts.Client 0.1
import "../common"

Page {
    id: root
    title: "Authenticate"

    AccountService {
        id: accountService
        onAuthenticated: {
            console.log("Reply: " + JSON.stringify(reply))
        }
    }

    AccountServiceModel {
        id: accountsModel
        provider: "ubuntuone"
    }

    function useFirstAccountToAutheticate() {
        accountService.objectHandle = accountsModel.get(0, "accountServiceHandle")
        accountService.authenticate({})
    }

    Button {
        anchors {
            left: parent.left
            right: parent.right
            bottom: parent.bottom
        }
        text: i18n.tr("Authenticate using Ubuntu One")

        onTriggered: {
            if (accountsModel.count > 0) {
                useFirstAccountToAutheticate()
            }
            else {
                setup.exec()
            }
        }
    }

    Setup {
        id: setup
        providerId: "ubuntuone"

        onFinished: {
            useFirstAccountToAutheticate()
        }
    }
}

После успешной аутентификации я добираюсь:

Reply: {"Secret":"consumer_key=XXXX&consumer_secret=XXXX&created=DATE&name=NAME&token=XXXX&token_secret=XXXX&updated=DATE"}

(XXXX, ДАТА и ИМЯ не являются действительными значениями),
То, что я думал о выполнении, должно отправить маркер на сервер и разговор с Ubuntu Один API (если такая вещь существует, я не смог найти его) аутентифицировать пользователя. Было бы замечательно, если кто-то мог бы сказать мне, если я на правильном пути или если я должен делать что-то по-другому, потому что я отчасти застреваю.

Кроме того, я использую компонент Установки в своем QML для создания человечности одна учетная запись в случае, если у пользователя уже нет того. Это, кажется, работает на меня на моем рабочем столе Utopic, но не работает над моим телефоном Ubuntu. Я предполагаю, что должен установить applicationId, но для этого я должен создать .application XML-файл и установить его в каталоге, который я не думаю, что у меня есть доступ к тому, поскольку мое приложение заключено.

Любая справка ценится

1
задан 7 November 2014 в 10:35

2 ответа

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

0
ответ дан 10 November 2019 в 09:21

Я могу только ответить на вторую часть вопроса (о .application файле), потому что я не знаком с услугами, предложенными учетной записью U1.

Вы корректны в этом, Вам нужно .application файл, и Вам на самом деле также нужен a .service файл также. К счастью, возможно поставить их также с ограниченными приложениями, поставленными в пакете щелчка. Ваш manifest.json файл должен содержать что-то вдоль этих строк:

{
  ...
  "name": "com.example.package",
  "hooks": {
    "my-app": {
        "account-application": "my-app.application",
        "account-service": "my-app.service",
        "apparmor": "my-app.json",
        "desktop": "my-app.desktop"
    }
  },
  ...
}

Когда пакет щелчка установлен, .application и .service файлы обрабатываются и установили под ~/.local/share/accounts/, и их имена (и поэтому идентификаторы) изменились на <package-name>_<application-name>.{service,application}, к которому в примере выше привел бы com.example.package_my-app.{service,application}.

Только для полноты, я показываю пример того, на что могли быть похожими эти файлы:

мой-app.application

<?xml version="1.0" encoding="UTF-8" ?>
<application>
  <service-types>
    <service-type id="com.example.package_my-app">
      <description>Login into XXX using your U1 account</description>
    </service-type>
  </services-types>
</application>

и

мой-app.service

<?xml version="1.0" encoding="UTF-8"?>
<service>
  <type>com.example.package_my-app</type>
  <name>U1 for XXX</name>
  <provider>ubuntuone</provider>
</service>
3
ответ дан 7 December 2019 в 12:49

Другие вопросы по тегам:

Похожие вопросы: