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

时间:2011-12-08 16:11:38

标签: youtube google-api gdata

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

error : invalid_grant

我正在使用:

grant_type = authorization_code
像他们建议的那样。过去两天前发生的事情是重新验证,网页会说“您之前已使用此应用程序进行过身份验证,是否要再次授予其访问权限?”。发生了什么变化或者我可能做错了什么?

2 个答案:

答案 0 :(得分:10)

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

此网址记录了所有参数,但没有提及刷新令牌:http://code.google.com/apis/accounts/docs/OAuth2WebServer.html

答案 1 :(得分:1)

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

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

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

对我而言,我已经修好了,我希望它也适合你。