Qt Qml Map с плагином HERE, как правильно проходить аутентификацию, используя here.token - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь пройти аутентификацию в плагине ЗДЕСЬ. Я использую windows 10 с Qt 5.9.1 Mingw 32bit, и мое приложение почти все написано на c ++. Единственная часть, где я использую QML, касается карты. Я хочу использовать плагин HERE, но я новичок ie с QtLocation и плагинами, и я действительно не могу понять, что мне нужно сделать для аутентификации в HERE. Я пытался следовать руководству на сайте ЗДЕСЬ, но я действительно не могу понять.

Я знаю из qt, что код, который я должен использовать для проверки подлинности на ЗДЕСЬ, следующий:

Plugin {
    name: "here"
    PluginParameter { name: "here.app_id"; value: "myapp" }
    PluginParameter { name: "here.token"; value: "abcdefg12345" }
}

Так что мне нужно здесь. Итак, теперь у меня есть параметр APP ID , но я действительно не понимаю, как получить значение TOKEN , чтобы поместить его во вторую строку. Прежде всего, для моего конкретного c случая мне нужно создать ключ API или OAuth 2.0?

Я пытался следовать тому, что написано в этой ссылке , используя Postman и в конце Я получил очень длинный токен, который я скопировал и вставил в параметр "here.token" , но когда я запускаю приложение, оно дает мне Invalid here.token и он не отображает карту.

Может кто-нибудь подсказать, как правильно получить значение токена? Или кто-то может указать мне на некоторые ссылки? Есть ли другой способ войти в систему, используя ключ API, например, вместо токена?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Сервис HERE был обновлен, но Qt не обновил его плагин.

Основные изменения:

  • app_id и токен необходимы только при использовании HERE SDK, в случае Qt должен использоваться apiKey.

  • URL-адрес HERE-сервисов имеет следующие изменения:

    • Использовать https (раньше он был доступен через http, но не сейчас).

    • Предыдущий хост имел формат X.api.here.com, но теперь это X.ls.hereapi.com.

То есть вы должны изменить запрос с:

http://X.api.here.com/?app_code={here.app_code}&app_id={here.app_id}&{other_parameters}

на

https://X.ls.here.com/?apiKey={here.apiKey}&{other_parameters}

Qt 5.14:

Учитывая вышеизложенное, я создал патч , который реализует вышеприведенное, поэтому для его использования вы должны выполнить следующую процедуру:

git clone https://code.qt.io/qt/qtlocation.git
cd qtlocation
git checkout 5.14
wget https://raw.githubusercontent.com/eyllanesc/stackoverflow/master/questions/60544057/Qt5.14/update-HERE-Qt5.14.patch
git config --global user.email "you@example.com"
git am < update-HERE-Qt5.14.patch
qmake .
make
make install

Qt 5.9:

Учитывая вышеизложенное, я создал патч , который реализует вышеприведенное, поэтому для его использования необходимо выполнить следующую процедуру:

git clone https://code.qt.io/qt/qtlocation.git
cd qtlocation
git checkout 5.9
wget https://raw.githubusercontent.com/eyllanesc/stackoverflow/master/questions/60544057/Qt5.9/update-HERE-Qt5.9.patch
git config --global user.email "you@example.com"
git am < update-HERE-Qt5.9.patch
qmake .
make
make install

Window {
    visible: true
    width: 640
    height: 480
    Plugin {
        id: mapPlugin
        name: "here"
        PluginParameter { name: "here.apiKey"; value: "{YOUR_API_KEY}" }
    }
    Map {
        anchors.fill: parent
        plugin: mapPlugin
        center: QtPositioning.coordinate(59.91, 10.75) // Oslo
        zoomLevel: 14
    }
}

enter image description here

0 голосов
/ 31 марта 2020

В отношении документации по https://developer.here.com/documentation/maps/3.1.12.0/dev_guide/topics/why-use.html

HERE JS API 3.1 - это API, созданный для WebGL и HTML5 -поддерживаемых сред для максимизации эффективности отрисовки карты и объекта карты на мобильных устройствах и настольных компьютерах.

Поддержка браузеров

API Карт специально создан для современных браузеров , поддерживающих WebGL и HTML5 для настольных ПК а также мобильные среды. Хотя он оптимизирован для определенных браузеров и сред, мы делаем все возможное, чтобы API можно было использовать на самых разных платформах и браузерах .

Поэтому API JS должен работать на любой элемент WebView Type, основанный на современном браузерном движке. Тем не менее, HERE не предоставляет поддержку HERE API во всех встроенных браузерах, например, Qt QML et c.

Получение учетных данных

Все пользователи HERE JavaScript API должен получить ключ API для осуществления аутентификации и авторизации при взаимодействии с внутренними службами. Ключ API назначается для каждого приложения. Вы должны войти в систему и выбрать план (например, Freemium). Как создать ключ API

...