我有以下代码
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并且我的代码正在运行
答案 0 :(得分:2)
这是记录在案的行为:
nickname()返回&#34;昵称&#34;用户,可显示的名称。对于 Google帐户用户,昵称是&#34; name&#34;的一部分 用户的电子邮件地址,如果该地址与该地址位于同一域中 应用程序,或用户的完整电子邮件地址。对于OpenID 用户,昵称是OpenID标识符。
(来自here)
OpenID和用户API都没有真正昵称的概念;如果你想要一个,你必须要求用户提供一个并存储它。