将用户从Google App Engine迁移到Google OpenID

几个月前,我从Google App Engine迁移出去。 但是我仍然依靠它进行身份验证,因为我的用户在GAE上通过其user_id属性进行标识。

为此,我的(现在是外部的)应用程序使用加密,签名和时间戳登录请求将用户重定向到Google App Engine应用程序。 GAE应用程序然后使用GAE的“用户”服务执行登录。 在GAE上成功登录后,用户将再次使用加密的,带符号和时间戳的响应重定向到我的外部应用程序。 基本的实现可以在这里和这里找到。 正如你所看到的,这是非常基本的,并且依赖于沉重的加密导致性能不佳。

我的外部应用程序(在本例中为Django应用程序)将user_id存储在用户表的密码字段中。 除了user_id之外,我只能从GAE获取电子邮件地址,以在Django中存储用户名和电子邮件。

现在我想删除对GAE服务的依赖。 想到的第一种方法可能是向每个用户发送一封电子邮件,要求他设置一个新密码,然后使用Django执行我自己的认证。

我更喜欢依靠Google的OpenID服务的解决方案,因此用户实际上没有区别。 这也是首选,因为我需要将用户发送给Google,以获取Google Calendar API的AuthSub令牌。

问题是,我找不到使用GAE的方式来获取给定Google帐户的GAE user_id属性。 OpenID和所有其他身份验证协议使用不同的标识符。

所以现在的问题是:Google是否提供了我可以用于此目的的API,但我还没有看到? 有没有其他可能的解决方案或想法如何迁移用户帐户?

提前致谢!


做到这一点的最佳方式是向用户展示“迁移”interstital,将其重定向到Google OpenID提供商并提示他们登录。 一旦他们在两个地点都登录,您可以匹配这两个帐户,并让他们将来通过OpenID登录。


AFAIK是Google帐户与Google OpenID之间唯一的通用标识符,即电子邮件。

  • 当用户通过当前的gae设置登录到Google帐户时收到电子邮件。 使用User.email() 。 保存此电子邮件以及用户数据。

  • 当您收到所有(大部分)用户的电子邮件时,请切换到Google OpenID。 用户登录时,获取电子邮件地址并在数据库中找到该用户。


  • 你为什么不尝试混合方法:

  • 切换到OpenId
  • 如果你的应用程序已经知道了userId,你就完成了
  • 如果没有问用户,他是否有账户迁移
  • 如果是的话,请将他与老机构联系起来,并转交给他
  • 如果不是创建一个新帐户
  • 链接地址: http://www.djcxy.com/p/58643.html

    上一篇: Migrate users from Google App Engine to Google OpenID

    下一篇: Install gem on demand