GAE Users服务为用户nickname属性返回xml

时间:2013-10-19 14:01:38

标签: python google-app-engine openid federated-identity

我有一个使用GAE用户服务和fedarated登录的应用程序。

对于一个用户,我在nickname属性中获得了一个xml feed。

对于所有其他字段,数据正常

详情:

我的注册处理程序

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]

在我的浏览器中打开该网址,我可以下载 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>

我错过了什么?

编辑

因为这无处可去,我想至少知道:

我是否可以相信昵称有可能为用户返回一个带有可用昵称的字符串? 我已经发现,如果你想将它暴露给公共数据,这个属性会带来风险,因为大多数情况都是“用户名”或电子邮件地址......

顺便说一句

来自Docs

  

nickname()返回用户的“昵称”,可显示的名称。对于   谷歌帐户用户,昵称是“名称”部分   用户的电子邮件地址,如果该地址与该地址在同一个域中   应用程序,或用户的完整电子邮件地址。对于OpenID   用户,昵称是OpenID标识符。

和一点later

  

email()返回用户的电子邮件地址。如果您使用OpenID,那么   不应该依赖这个电子邮件地址是正确的。应用   应该使用昵称作为可显示的名称。

1 个答案:

答案 0 :(得分:0)

来自docs:“对于OpenID用户,昵称是OpenID标识符。”你应该使用电子邮件。