3

GAE ユーザー サービスと連携ログインを使用するアプリケーションがあります。

最近、あるユーザーのニックネーム プロパティで xml フィードを取得しました。

のすべてのフィールドのデータは問題ありません

詳細に:

私の登録ハンドラ

class RegisterPersonHandler(UserPageHandler):

    def get(self):
        user = users.get_current_user()
        if not user:
            self.redirect(users.create_login_url(self.request.uri), abort=True)
            return
        person = Person.get_or_insert(user.user_id())
        if not self._register(person, user):
            logging.warning('Warning registration failed')
            return
        self.redirect("/")

    def post(self):
        self.view("No reason to be here Mr Jiggles ;-)")
        return

    @ndb.transactional()
    def _register(self, person, user):
        ''' Registration process happens here
        '''
        # check if the person has info and if not create it
        info = PersonInfo.query(ancestor=person.key).get()
        if not info:
            info = PersonInfo(id=user.user_id(), parent=person.key)
            info.nick_name = user.nickname()
            info.email = user.email()
            info.put()
        return True

ニックネームフィールドで、次の文字列を取得します

https://www.google.com/accounts/o8/id?id=[id_of_the_user]

その URL をブラウザで開くと、次の内容のxmlをダウンロードできます。

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/signon</Type>
<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/accounts/o8/ud</URI>
</Service>
<Service priority="10">
<Type>http://specs.openid.net/auth/2.0/signon</Type>
<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/accounts/o8/ud?source=mail</URI>
</Service>
<Service priority="10">
<Type>http://specs.openid.net/auth/2.0/signon</Type>
<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/accounts/o8/ud?source=gmail.com</URI>
</Service>
<Service priority="10">
<Type>http://specs.openid.net/auth/2.0/signon</Type>
<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/accounts/o8/ud?source=googlemail.com</URI>
</Service>
<Service priority="10">
<Type>http://specs.openid.net/auth/2.0/signon</Type>
<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/accounts/o8/ud?source=profiles</URI>
</Service>
</XRD>
</xrds:XRDS>

私は何が欠けていますか?

編集

これはどこにも行き届いていないため、少なくとも知りたいのは次のとおりです。

ユーザーの使用可能なニックネームを含む文字列を返すために、ニックネーム プロパティを信頼できますか? ほとんどの場合、「ユーザー名」または電子メールアドレスであるため、このプロパティを公開データに公開する場合、このプロパティがリスクを課すことをすでに理解しています...

ところで

ドキュメントから

Nickname() ユーザーの「ニックネーム」、表示可能な名前を返します。Google アカウント ユーザーの場合、ニックネームは、アドレスがアプリケーションと同じドメインにある場合はユーザーのメール アドレスの「名前」部分であり、そうでない場合はユーザーの完全なメール アドレスです。OpenID ユーザーの場合、ニックネームは OpenID 識別子です。

そして少し後に

email() ユーザーの電子メール アドレスを返します。OpenID を使用している場合は、この電子メール アドレスが正しいとは限りません。アプリケーションは、表示可能な名前にニックネームを使用する必要があります。

4

0 に答える 0