我已经成功地使用OAuth1.0 + OpenID Hybrid协议(protocol)与Google进行身份验证,然后再使用其服务。
但是,我遇到的是特定用户帐户的错误。
我目前的流程:
https://accounts.google.com/o/openid2/auth?https://accounts.google.com/o/openid2/auth?openid.ns=http://specs.openid.net/auth/2.0&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&.....&openid.ns.ext2=http://specs.openid.net/extensions/oauth/1.0&openid.ext2.consumer=mywebsite.com&openid.ext2.scope=https://picasaweb.google.com/data+https://www-opensocial.googleusercontent.com/api/people/+http://www.google.com/m8/feeds/
)将用户重定向到提供程序但是,对于特定的用户帐户,Google不会重定向到成功验证和授予权限后的上述结果,而是将其重定向到某个URL
https://accounts.google.com/o/openid2/approval?xsrfsign=AC9jObYAAAAATpF6x6S6Ac7MfHaZ
,然后返回到我的应用程序,而查询字符串中没有任何参数。相同的代码对其他帐户也可以正常工作。我无法确定一个帐户的特殊性(除了我上个月才创建的)。请注意,只有在我将picasa包括在范围内时,才会发生这种情况。如果我排除picasa,则可以。
请帮忙。
最佳答案
能够通过添加request_token请求来解决此问题。奇怪的是,它不需要大多数帐户的请求就可以工作。但是,对于创建的新帐户,我必须在请求中显式设置此参数。设置完此参数后,无需将用户重定向到xsrfsign。URL,我获得了用户详细信息和请求 token 。
关于oauth - 谷歌混合协议(protocol)身份验证问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7703002/