2

我有以下代码

 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

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

4

1 回答 1

2

这是记录在案的行为:

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

(从这里

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

于 2012-10-09T18:18:51.497 回答