Pergunta

Quero fazer uma solução de cliente-servidor multi-usuário com o cliente de espessura Java Swing como front-end e Google AppEngine (Java One) como um back-end.

O problema é que o GAE fornece apenas formulários baseados na Web para fazer login e sair, portanto, não há uma maneira trivial de empregar recursos de contas do Google em um cliente grosso.

Você pode dar alguns conselhos/dicas/idéias sobre como permitir um login de um cliente grosso e fazer logout de um GAE WebApp?

Foi útil?

Solução

Existe uma maneira de os aplicativos do cliente se autenticarem em relação às contas do Google, mas não sei se o token que você recebe pode ser transmitido ao AppEngine. Ver: ClientLogin para aplicativos instalados

Outras dicas

Sinto muito, só posso responder indiretamente. É possível fazer login em um aplicativo no AppSpot.com com uma conta do Google. Você só precisa fazer tudo o que um navegador faria, incluindo manter alguns cookies e entrar em contato com vários servidores enquanto eles o rejeitam.

Eu brinquei com isso para um projeto de natimorto há alguns meses e acabei com um script de shell que corta principalmente para fazer login. Talvez você possa tirar do que precisa.

#!/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

Conforme sugerido por @jason, o processo de autorização do ClientLogin está abordando esse problema.

Como uma abordagem alternativa de efeito mínimo, você pode incorporar as formas baseadas na Web (HTML) em seu cliente grosso, ou seja, usar um componente Java que suporta a renderização de HTML (como um JEditorPane com um HTMLEditorKit instalado) e apresente esse componente dentro do seu aplicativo Swing-pelo menos os usuários não precisariam alternar entre o aplicativo e o navegador dessa maneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top