9

を呼び出して返されたuserIduser.getUserId()をシークレットとして扱う必要があるのか​​、それともパブリックURLで使用できるのか疑問に思っていますか?たとえば、プロファイルページのURLはhttp://example.com/userprofile/11901930903930のようになります。ここで、11901930903930はAppengineでGoogleが生成したuserIdです。

これは、userIdを取得するために使用している関数です。

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();

String id = user.getUserId();
4

1 に答える 1

11

実際、私はこの情報をグーグルで見つけました、そして結論はそれらが公に使われるべきではないということです。

Googleから:

アカウント情報へのアクセス

ユーザーがアプリにサインインしている間、アプリは、ユーザーがアプリに対して行うすべてのリクエストについて、アカウントのメールアドレスまたはOpenID識別子にアクセスできます。アプリは、ユーザーが自分のアカウントのメールアドレスを変更した場合でも、ユーザーを一意に識別するユーザーIDにアクセスすることもできます。

アプリは、現在のユーザーがアプリの管理者(「開発者」)であるかどうかを判断することもできます。他のユーザーを認証しない場合でも、この機能を使用してアプリの管理機能を構築できます。Go、Java、およびPython APIを使用すると、URLを「管理者のみ」として簡単に構成できます。

注:すべてのユーザーは、すべてのAppEngineアプリケーションで同じユーザーIDを持っています。アプリが公開データでユーザーIDを使用する場合(URLパラメーターに含めるなど)、IDをわかりにくくするために「salt」値を追加したハッシュアルゴリズムを使用する必要があります。生のIDを公開すると、あるアプリでのユーザーのアクティビティを別のアプリでのアクティビティに関連付けたり、ユーザーに別のアプリへのログインを強制してユーザーのメールアドレスを取得したりできる可能性があります。

ページへのリンク

于 2012-05-15T16:05:27.917 に答える