【问题标题】:Integrating Google AppEngine with a Thick Client将 Google AppEngine 与胖客户端集成
【发布时间】:2009-11-06 17:53:00
【问题描述】:
我想制作一个多用户客户端-服务器解决方案,其中 Java Swing 胖客户端作为前端,Google AppEngine(Java 客户端)作为后端。
问题在于 GAE 仅提供基于 Web 的登录和注销表单,因此在胖客户端中使用 Google 帐户功能并非易事。
您能否就如何允许胖客户端登录和注销 GAE webapp 提供一些建议/提示/想法?
【问题讨论】:
标签:
java
security
google-app-engine
thick-client
【解决方案2】:
对不起,我只能间接回答你。可以使用 Google 帐户登录到 appspot.com 上的应用程序。您只需要做浏览器会做的所有事情,包括保留一些 cookie 并在它们反弹您时联系多个服务器。
几个月前,我在一个死产的项目中使用了这个,最后得到了一个主要运行 cURL 来登录的 shell 脚本。也许你可以从中获取你需要的东西。
#!/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
【解决方案3】:
正如@Jason DeFontes 所建议的,ClientLogin 授权流程正在解决此问题。
作为一种最省力的替代方法,您可以将基于 Web (html) 的表单嵌入到您的胖客户端中,即使用支持 html 渲染的 java 组件(例如安装了 HTMLEditorKit 的 JEditorPane)并在你的 Swing 应用中展示这个组件——至少用户不需要以这种方式在你的应用和浏览器之间来回切换。