我想制作一个多用户客户端 - 服务器解决方案,其中Java Swing胖客户端作为前端,Google AppEngine(Java one)作为后端。
问题在于GAE仅提供基于Web的登录和注销表单,因此在胖客户端中使用Google帐户功能并不是一种简单的方法。
您是否可以就如何允许胖客户端登录和从GAE webapp注销提供一些建议/提示/想法?
答案 0 :(得分:2)
客户端应用可以通过Google帐户进行身份验证,但我不知道您收到的令牌是否可以传回AppEngine。请参阅:ClientLogin for Installed Applications
答案 1 :(得分:2)
对不起,我只能间接回答你。可以使用Google帐户登录appspot.com上的应用。您只需要完成浏览器的所有操作,包括保留一些cookie并联系多个服务器,因为它们会让您反复使用。
几个月前,我为一个死产项目玩弄了这个,最后得到了一个shell脚本,主要运行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
答案 2 :(得分:1)
正如@Jason DeFontes所建议的那样,ClientLogin授权流程正在解决这个问题。
作为一种尽力而为的替代方法,您可以将基于Web的(html)表单嵌入到胖客户端中,即使用支持html呈现的java组件(如JEditorPane
和{{1}安装)并在你的swing应用程序中展示这个组件 - 至少用户不需要在你的应用程序和浏览器之间来回切换。