1

我在谷歌应用引擎上有一个 webapp,它检查用户是否使用以下代码登录(通过联合 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

这似乎与 StackExchange 在实现 OpenID 时面临的问题类似。你可以在这里看到他们是如何处理的: https ://blog.stackoverflow.com/2010/04/openid-one-year-later/

从该页面:

所以我们的跨站用户账户匹配现在是这样工作的:

  1. 按 GUID 匹配。这是我们在帐户关联期间生成和分配的东西,因此它是一个完美的指纹。

  2. 通过 OpenID URL 匹配。这适用于绝大多数 OpenID 提供者。

  3. 通过 OpenID 提供的电子邮件地址匹配……如果您在我们的信任白名单中。这适用于那些生成特定域标识符的稀有 OpenID 提供商(目前只有 Google GMail)。

您也可以尝试使用 OpenID 库。这里列出了几个:http: //openid.net/developers/libraries/

希望这可以帮助。

于 2012-12-06T23:04:05.057 回答