3

Java Swing シック クライアントをフロントエンドとして、Google AppEngine (Java の 1 つ) をバックエンドとして、マルチユーザー クライアント サーバー ソリューションを作成したいと考えています。

問題は、GAE がログインおよびログアウト用の Web ベースのフォームしか提供しないことです。そのため、シック クライアントで Google アカウント機能を使用する簡単な方法はありません。

シック クライアントが GAE Web アプリケーションにログインおよびログアウトできるようにする方法について、アドバイス、ヒント、アイデアを教えてください。

4

3 に答える 3

2

クライアントアプリがGoogleアカウントに対して認証する方法はありますが、受け取ったトークンをAppEngineに戻すことができるかどうかはわかりません。参照:インストールされているアプリケーションのClientLogin

于 2009-11-06T18:44:04.057 に答える
2

すみません、間接的にしかお答えできません。Google アカウントを使用して、appspot.com のアプリにログインすることができます。いくつかの Cookie を保持したり、複数のサーバーがあなたをバウンスしたときに接続したりするなど、ブラウザーが行うすべてのことを行う必要があります。

私は数ヶ月前に失敗に終わったプロジェクトでこれをいじり、ログインするために主に 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
于 2009-11-09T14:03:12.213 に答える
1

@Jason DeFontes が示唆するように、ClientLogin 認証プロセスはこの問題に対処しています。

最小限の労力の代替アプローチとして、Web ベース (html) フォームをシック クライアントに埋め込むことができます。つまり、html レンダリングをサポートする Java コンポーネント (インストール済みJEditorPaneHTMLEditorKitなど) を使用し、swing アプリ内にこのコンポーネントを提示します。 - 少なくとも、ユーザーはこの方法でアプリとブラウザーを行き来する必要はありません。

于 2009-11-10T08:55:27.730 に答える