Вопрос

Я хочу создать многопользовательское клиент-серверное решение с Java Swing thick client в качестве интерфейса и Google AppEngine (Java one) в качестве серверной части.

Проблема в том, что GAE предоставляет только веб-формы для входа в систему и выхода из нее, поэтому нет простого способа использовать функции Google Accounts в толстом клиенте.

Можете ли вы дать несколько советов / подсказок / идей о том, как разрешить толстому клиенту входить в веб-приложение GAE и выходить из него?

Это было полезно?

Решение

Для клиентских приложений существует способ аутентификации в учетных записях Google, но я не знаю, можно ли передать полученный вами токен обратно в AppEngine.Видишь: ClientLogin для установленных приложений

Другие советы

Извините, я могу ответить вам только косвенно.Войти в приложение можно на appspot.com с помощью учетной записи Google.Вам просто нужно делать все, что делает браузер, включая сохранение некоторых файлов cookie и обращение к нескольким серверам, когда они перенаправляют вас.

Я поиграл с этим для мертворожденного проекта пару месяцев назад и в итоге получил сценарий оболочки, который в основном запускает cURL для входа в систему.Возможно, вы могли бы взять из него то, что вам нужно.

#!/bin/bash

my_app="set-this-to-my-app-id"
url="http://$my_app.appspot.com"
curl='curl --cookie-jar cookies'

if [ -z "$EMAIL" -o -z "$PASS" ]; then
    echo -n 'Email: '
    read EMAIL
    echo -n 'Pass: '
    read PASS
fi

rm -f cookies auth

echo 'Login'
$curl https://www.google.com/accounts/ClientLogin --output auth \
      -d "Email=$EMAIL" -d "Passwd=$PASS" \
      -d accountType=HOSTED_OR_GOOGLE     \
      -d source=$my_app                   \
      -d service=ah

. auth # XXX Be careful here. The output of the above
       # command happens to be Bash syntax too!
rm -f auth

echo 'Logging into app and getting cookie'
$curl "$url/_ah/login?continue=$url/console/&auth=$Auth"

echo
echo 'Example POST query'
$curl -X POST --cookie cookies "$url/some/path" -d 'foo=bar'

echo
rm -f cookies

как предложил @Jason DeFontes, процесс авторизации ClientLogin решает эту проблему.

в качестве альтернативного подхода с минимальными усилиями вы могли бы встроить веб-формы (html) в свой толстый клиент, т. е.используйте java-компонент, который поддерживает html-рендеринг (например, JEditorPane с помощью HTMLEditorKit установлен) и представьте этот компонент внутри вашего приложения swing - по крайней мере, пользователям не нужно будет таким образом переключаться между вашим приложением и браузером.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top