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

mba*_*k2k 7 python openid django google-app-engine

几个月前我从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和所有其他身份验证协议使用不同的标识符.

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

提前致谢!

Pet*_*ego 1

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

  1. 当用户通过您当前的 gae 设置登录 Google 帐户时收到电子邮件。使用User.email()。将此电子邮件与用户数据一起保存。

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