Die Integration von Google App Engine mit einem Thick-Client
-
18-09-2019 - |
Frage
Ich mag eine Multi-User-Client-Server-Lösung mit Java machen.
Das Problem ist, dass GAE nur webbasierte Formulare für die Anmeldung und aus bietet, so gibt es keine triviale Weise zu verwenden Google-Funktionen in einem Thick-Client-Konten.
Können Sie einige Ratschläge / Hinweise / Ideen geben, wie eine Thick-Client-Login und Logout von einer GAE Webapp erlauben?
Lösung
Es gibt einen Weg für Client-Anwendungen gegen Google-Konten zu authentifizieren, aber ich weiß nicht, ob das Token Sie erhalten zurück zu AppEngine weitergegeben werden. Siehe: Clientlogin für installierte Anwendungen
Andere Tipps
Es tut mir leid, ich kann Ihnen nur indirekt beantworten. Es ist möglich, eine App anmelden auf appspot.com mit einem Google-Konto. Sie müssen nur ein Browser würde, alles tun, auch ein paar Kekse zu halten und kontaktieren mehrere Server, wie sie Sie rund um die Beine.
Ich spielte mit diesem für ein totes Projekt vor ein paar Monaten und mit einem Shell-Skript am Ende, die meist cURL läuft eingeloggt sein. Vielleicht könnten Sie davon nehmen, was Sie brauchen.
#!/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
wie von @ Jason DeFontes die Clientgenehmigungsverfahren dieses Problem anspricht.
als minimal-Effort alternativen Ansatz, könnten Sie die Web-basierte (html) bildet in Ihre Thick-Client einzubetten, dh eine Java-Komponente verwenden, die HTML-Rendering unterstützt (wie ein JEditorPane
mit einem HTMLEditorKit
installiert ist) und präsentieren diese Komponente in Ihrem Swing app -. zumindest die Benutzer nicht hin- und her zwischen Ihrer Anwendung und dem Browser wechseln müssen diese Art und Weise