我们之前使用的是 openID 2.0,并且有一个充满用户及其关联的 openid 的数据库。鉴于该协议已被弃用,我们决定改用 Google+ 登录。
python-social-auth
在 Django 项目中使这相对简单,但现在我不确定如何将我们现有用户的 openid 映射到较新的 Google 子 ID。
我添加了
SOCIAL_AUTH_AUTH_EXTRA_ARGUMENTS = {'openid.realm': 'http://www.example.com'}
到settings.py,我可以看到python-social-auth
已经注意到并传递?openid.realm=http://www.example.com
了GET字符串以及范围等,因为它应该。然而,谷歌似乎没有用 OpenID id 响应。我只得到id_token
(以及access_token
等bearer
)。
如何让 Google 以用户的实际 openid 响应?
(我可以在 OpenID2.0 到 Google+ 迁移上找到的唯一来自 Google 的文档,似乎更适合他们的 javascript 登录按钮,例如https://developers.google.com/+/api/auth-migration#oid2)
编辑:也许 id 以某种方式编码在 中id_token
,如果是这样,我该如何解码?