2012-08-02 244 views
0

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

这个ID看起来很不一样。在google_oauth2用户ID是这样的:

123456789

,并在谷歌混合用户ID是这样的:

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

是否有某种方式来适应这种在一起?是否有一个基于oauth的调用可以让我检索这样一个公开的用户标识?由于我们将其用于登录目的,因此我不想在登录页面上放置2个Google登录按钮。我几乎无法想象我们的用户能够理解这一点。

是否有解决此类问题的共同策略?

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

回答

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 
如果用户不与谷歌登录

立即模式也可能会失败,但因为他刚从的oauth2舞回来,他就必须有因为他立即被重定向,所以在这之间注销是不太可能的。

0

combination OpenId/OAuth call谷歌的谈判应该做您的需要。但是,文档中的所有链接都是针对OAuth 1.0的。因此,您需要进行调查以确保它可以与OAuth 2.0协同工作,因为Google已弃用了OAuth 1.0界面。

+0

嗨,这是我们目前所做的。但这是oauth1,较新的API需要OAuth2。 – squiddle 2012-08-03 05:57:49