user.nickname给出一个URL而不是昵称python GAE

时间:2012-10-09 17:39:52

标签: google-app-engine python-2.7 openid

我有以下代码

 def get(self):
    user = users.get_current_user()
    if user:  # signed in already
        self.response.out.write("User Id =" + user.user_id() + " - User federated identity = " +  user.federated_identity() + " - User IdentityProvider = "+user.federated_provider() + " - User Email" + user.email() + "USer Nickname = " + user.nickname())
    else:     # let user choose authenticator
        self.response.out.write('Hello world! Sign in at: ')
        for name, uri in providers.items():
            self.response.out.write('[<a href="%s">%s</a>]' % (
                users.create_login_url(federated_identity=uri), name))

我尝试使用google以及yahoo作为开放ID提供商,但每当我尝试访问用户联合身份或用户昵称等用户属性时,它会输出URL而不是昵称,任何人都可以告诉我,如果我是这里做错了什么。

这是我看到的输出

User federated identity = https://me.yahoo.com/a/JHqoh95mg8UqmFeDWlzSxKLW_SnNIOTlOcplbGQ

and user.nickname() also outputs this

P.S:我已经将我的应用程序配置为使用应用程序仪表板中的开放ID并且我的代码正在运行

1 个答案:

答案 0 :(得分:2)

这是记录在案的行为:

  

nickname()返回&#34;昵称&#34;用户,可显示的名称。对于   Google帐户用户,昵称是&#34; name&#34;的一部分   用户的电子邮件地址,如果该地址与该地址位于同一域中   应用程序,或用户的完整电子邮件地址。对于OpenID   用户,昵称是OpenID标识符。

(来自here

OpenID和用户API都没有真正昵称的概念;如果你想要一个,你必须要求用户提供一个并存储它。