2011-01-26 18 views
5

フェデレーテッドログインを使用してGoogle App Engine for Javaアプリを構築しています。Google App Engine Java - フェデレーションログイン、データストアに保存するもの

ユーザーがOAuthプロバイダを使用してアプリにログインしたとき、私はUserオブジェクト[http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users]を取得します。 /User.html]。

そのユーザーへのリンクをデータストアに保存したいとします。しかし、私はユニークなキーとして何を使用しますか?それはgetFederatedIdentity()かgetUserId()ですか?どちらにもJavaDocはほとんどありません。明らかにユーザーがその後私のアプリにログインすると、データストアに保存したオブジェクトを取得したいと思います。

私はfederatedIdentityフィールドを理解していますが、これは常に入力する必要があることを理解しています(フェデレーションログオンのみを許可します)。しかし、それがログオンしているユーザーに自分の詳細をリンクするために使用するフィールドであれば、Googleはローカルサーバーでテストするときにこれを空白のままにしています。

getUserIdフィールドとは何ですか - Googleはどのように設定しますか?ユーザーのフェデレーションIDが同じであれば、同じままにすることは保証されますか?

どうもありがとう

答えて

2

Users Java API Overview

からユーザーがアプリに署名されている間、アプリは、ユーザーがアプリになり、すべての要求のためのアカウントの電子メールアドレスやOpenIDの識別子にアクセスすることができます。また、ユーザーが自分のアカウントのメールアドレスを変更した場合でも、そのユーザーを一意に識別するユーザーIDにアクセスすることができます。

getUserId()のようなサウンドが最適です。

+0

私はそれを試してみます - 私はちょうどそのユーザーIDフィールドがどのように設定されているのか知りたいです...しかし、もしそれが一意であり、連合のログインが同じであれば幸せですありがとう。 – planetjones

+0

User APIによって(オブジェクト内に)設定されているように聞こえます –

0

いずれかを格納する必要はありません。ユーザーオブジェクトをデータストアに直接格納できます。サポートされるオブジェクトタイプのリストについては、hereを参照してください。

+0

ok私はそれを行うことができますが、それに対して追加の属性を保存したいのです(私はそれを拡張しますか?)。ユーザーは後でログオンするので、ユーザーオブジェクトをキーで取得する必要があります.UserService.getUserがデータストア内のバージョンを返さない限り、ユーザーが電子メールアドレスを変更した場合、 。私は、自分のアプリに保存されているデータにフェデレーションログオンをリンクするためのユニークなキーとして電子メールアドレスを使用することについて何かを見ました...しかし、それはユーザーの電子メールアドレスのアクセス許可を要求する必要があることを意味します – planetjones

+0

@planetjones私が言っていることは、単にユーザーIDを格納するのではなく、モデルにプロパティとして格納できるということです。キー名に一意の変更されないキーが必要な場合は、user_idを使用します。 –