1

Google App EngineにWebアプリがあり、ユーザーが次のコードで(フェデレーションIDを介して)ログインしているかどうかを確認します。ドメイン名を変更したばかりですが、何らかの理由で現在のユーザーを認識していません。これは、少しテストして見つけたドメイン名によって、openIDが変わるためです。これらのユーザーにログインさせるための回避策または方法はありますか?

user = users.get_current_user()
currentregistereduser = None
try:
    user_db_qry = User.query(User.theid == user.federated_identity())
    user_db_list = user_db_qry.fetch(1)
    currentregistereduser = user_db_list[0]

    # I go on here to do all of the stuff for a logged in user

#if the user does not exist yet
except IndexError:
    logging.error("indexerror" + str(User.theid) + " and " + str(user.federated_identity()))
    user_db = User(
        name=user.nickname(),
        email=user.email(),
        theid=user.federated_identity(),
        visits = 0,
        medals = 0,
        prestige = 1,
        )
    user_db.put()
    #they go on to create their profile data here
    self.redirect("/profile")
4

1 に答える 1

3

これは、OpenIDを実装したときにStackExchangeが直面した問題と同様の問題のようです。あなたは彼らがそれをどのように扱ったかをここで見ることができます: https ://blog.stackoverflow.com/2010/04/openid-one-year-later/

そのページから:

したがって、クロスサイトユーザーアカウントの照合は次のように機能します。

  1. GUIDで一致します。これは、アカウントの関連付け中に生成および割り当てるものであるため、完全なフィンガープリントです。

  2. OpenIDURLで一致します。これは、大多数のOpenIDプロバイダーで機能します。

  3. OpenIDが提供する電子メールアドレスで一致します…あなたが私たちの信頼ホワイトリストに載っている場合。これは、ドメイン固有の識別子を生成するまれなOpenIDプロバイダー(現在はGoogle GMailのみ)で機能します。

OpenIDライブラリを使用することもできます。いくつかはここにリストされています:http: //openid.net/developers/libraries/

お役に立てれば。

于 2012-12-06T23:04:05.057 に答える