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 プロバイダーとして使用してみましたが、ユーザーのフェデレーション ID やユーザーのニックネームなどのユーザー属性にアクセスしようとすると、ニックネームの代わりに URL が出力されます。ここ。

ここに私が見ている出力があります

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

and user.nickname() also outputs this

PS: アプリケーション ダッシュボードで Open ID を使用するようにアプリケーションを既に構成しており、コードは機能しています。

4

1 に答える 1

2

これは文書化された動作です:

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

ここから)

OpenIDもユーザーAPIも、実際のニックネームの概念はありません。必要な場合は、ユーザーに依頼して保存する必要があります。

于 2012-10-09T18:18:51.497 に答える