我在google应用引擎上有一个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")
答案 0 :(得分:3)
这似乎与StackExchange实现OpenID时面临的问题类似。你可以在这里看到他们如何处理它: http://blog.stackoverflow.com/2010/04/openid-one-year-later/
从该页面开始:
因此,我们的跨站点用户帐户匹配现在以这种方式运行:
按GUID匹配。这是我们在帐户关联期间生成和分配的内容,因此它是完美的指纹。
通过OpenID网址进行匹配。这适用于绝大多数OpenID提供商。
通过OpenID提供的电子邮件地址匹配...如果您使用我们的信任白名单。这适用于那些生成特定于域的标识符的稀有OpenID提供商(目前只有Google GMail)。
您也可以尝试使用OpenID库。这里列出了几个: http://openid.net/developers/libraries/
希望这有帮助。