当使用oAuth和youtube进行身份验证时,总是在第二次验证尝试时得到错误:invalid_grant,为什么?



截至昨天,我的应用程序能够通过oAuth 2.0与google (youtube)进行身份验证,第一次没有问题,但第二次(重新身份验证,相同的应用程序+相同的用户),当我为accessToken交换requestToken时,我得到一个错误:

error : invalid_grant

我用:

grant_type = authorization_code
就像他们建议的那样。以前发生的情况是,在2天前,在重新认证时,网页会说"您之前已经使用此应用程序进行了认证,您想再次授予它访问权限吗?"是什么发生了变化,还是我做错了什么?

我找到了一个解决这个问题的方法(至少对我们来说)。当重定向到accounts.google.com/o/oauth2/auth url时,我们必须同时添加approval_prompt=force和access_type=offline。如果缺少一个,则没有刷新令牌。

此url记录了所有参数,但没有说明刷新令牌:http://code.google.com/apis/accounts/docs/OAuth2WebServer.html

我想我可能在这里找到了答案:

https://groups.google.com/forum/!searchin/oauth2-dev/invalid_grant/oauth2-dev/eaOa6THER0k z4eO-taUFxgJ

问题在于需要发送的"code"参数需要编码。当您将approval_prompt设置为强制时,它将工作,因为返回代码包含url安全的字符。但是,对于第二次授权请求的返回代码,情况并非如此。

对我来说,这解决了它,我希望它对你也一样。

相关内容

  • 没有找到相关文章

最新更新