1

GoogleユーザーAPIが、ユーザーがログインに使用したメールアドレス以外のメールアドレスを返す状況があるかどうか疑問に思っています。

継承されたGoogleAppEngine Webサイトをデバッグしていて、これに分離しました。

self.google_user = users.get_current_user()
email = self.google_user.email()

このコードは、ユーザーがGoogle経由でログインするために使用したメールアドレスを返していません。別のメールアドレスが返されます。この場合はGmailアドレスです。

誰かが以前にこのような問題を経験したことがありますか?

4

2 に答える 2

1

メールアドレスは変更される可能性があります。おそらく、何らかの理由で元のアドレスが返されます。

代わりに変更されない一意のIDを使用することをお勧めします。

おそらく、ユーザーID(およびメールでユーザーと通信するために最後に表示されたメールアドレス)を保存する必要があります。安定したユーザーID。キー名または文字列プロパティとして使用できます。

UserPropertyを保存したくない場合があります。データストア内では、値は電子メールアドレスにユーザーの一意のIDを加えたものに等しくなります。ユーザーがメールアドレスを変更し、保存されている古いユーザーと新しいユーザーを比較すると、一致しません。

アプリケーションがユーザー値を格納できるように、dbライブラリとNDBライブラリの両方にUserPropertyプロパティタイプがあります。ただし、ユーザーが電子メールアドレスを変更するとこれらの値は無効になるため、ほとんどのアプリケーションではこの機能を適切に使用できません。

ユーザーオブジェクト

于 2012-11-21T14:54:06.073 に答える
0

答えは次のとおりです。Google Users API は、Google アカウントのプライマリ メール アドレスのみを返します。したがって、ユーザーは予備のメール アドレスに関連付けられた Google アカウントを介してアプリにサインインできますが、API からはプライマリ メール アドレスしか取得できません。そのため、ユーザーがサインインに使用したものとは別の電子メール アドレスが与えられたようです。

実際、Google アカウントのプライマリ アドレスが提供されましたが、彼らはセカンダリ メール アドレスを使用してサインインしました (気が狂いました)。

于 2013-07-04T09:19:37.797 に答える