L'integrazione di Google AppEngine con un client di spessore
-
18-09-2019 - |
Domanda
Voglio fare una soluzione client-server multi-utente con Java Swing thick client come un front-end e Google AppEngine (Java uno) come back-end.
Il problema è che GAE fornisce solo moduli web-based per l'accesso dentro e fuori, quindi non c'è modo banale per utilizzare Google Accounts caratteristiche in un thick client.
Si può dare alcuni consigli / suggerimenti / idee su come consentire un account di accesso thick client per e disconnessione da una webapp GAE?
Soluzione
C'è un modo per le applicazioni client per l'autenticazione contro gli account Google, ma non so se il token si riceve può essere passato al AppEngine. Vedere: ClientLogin per le applicazioni installate
Altri suggerimenti
Mi dispiace, posso rispondere solo indirettamente. E 'possibile accedere a un app su appspot.com con un account Google. Non vi resta che fare tutto un browser sarebbe, compreso il mantenimento dei biscotti e contattando diversi server come si rimbalzano intorno.
Ho suonato in giro con questo per un progetto nato morto un paio di mesi fa e si è conclusa con uno script di shell che viene eseguito per lo più cURL login. Forse si potrebbe prendere da esso ciò che è necessario.
#!/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
come suggerito da @ Jason DeFontes la procedura di autorizzazione ClientLogin sta affrontando questo problema.
come un approccio alternativo minimo sforzo, si potrebbe incorporare il web (html) forma nel client di spessore, vale a dire utilizzare un componente Java che supporta HTML rendering (come un JEditorPane
con una HTMLEditorKit
installato) e presentare questa componente dentro il vostro swing app -. almeno utenti non avrebbe bisogno di passare avanti e indietro tra la vostra applicazione e il browser in questo modo