Интеграция Google AppEngine с толстым клиентом

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

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

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

3 ответа

Решение

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

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

Я поиграл с этим для мертворожденного проекта пару месяцев назад и закончил со сценарием оболочки, который в основном запускает 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-приложении - по крайней мере, пользователям не нужно будет переключаться между вашим приложением и браузером таким образом.

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