0

我们有通过谷歌混合 Openid (OpenId+OAuth1 [0]) 协议进行身份验证的用户。要使用来自 google 的较新 API,我们必须更改为基于 oauth2 的身份验证。如果他是我们的 openid 用户之一,有没有办法在 oauth2 登录后知道?

id 看起来很不一样。google_oauth2 中的用户 ID 如下所示:

12345678901234567890

google hybrid 中的用户 ID 如下所示:

https://www.google.com/accounts/o8/id?id=AItOawnlIGFin5I0F059UdqSYbK9JmA99e99ms

有什么办法可以把它组合在一起吗?我可以进行基于 oauth 的调用来检索这样的 openid 用户标识吗?由于我们将其用于登录目的,我不想在登录页面上放置 2 个 google 登录按钮。我很难想象我们的用户会理解这一点。

是否有解决此类问题的通用策略?

[0] https://developers.google.com/accounts/docs/OpenID#oauth

4

2 回答 2

0

谷歌谈论了一个组合 OpenId/OAuth 调用,它应该可以满足你的需要。但是,文档中的所有链接都指向 OAuth 1.0。因此,您需要进行调查以确保它适用于 OAuth 2.0,因为 Google 已弃用 OAuth 1.0 接口。

于 2012-08-03T00:16:15.197 回答
0

好的,看来我有办法做到这一点。必须实施和检查,但理论上它应该像这样工作:

send user to oauth2 login 
    -> if known, log him in
    -> if unknown send him to openid with immediate mode
          -> if successfull log him in, associate the former oauth connection
          -> if error the user is unknown and will be created with his oauth token

如果用户没有使用 google 登录,即时模式也可能会失败,但由于他刚从 oauth2 舞蹈中回来,他必须在这之间注销,因为他会立即被重定向,所以这种情况不太可能发生。

于 2012-08-03T07:05:51.947 回答