Oauth 2.0 YouTube API刷新令牌已被撤销,代码为“400”;无效的“授权”;(似乎没有理由)
这是我关于stackoverflow的第一篇文章。来了 我已经构建了一个服务器端PHP应用程序,其中包括读取/更改一个用户的YouTube帐户(更改标题文件)。用户通过OAuth 2进行身份验证。我一直在存储刷新令牌,并在访问令牌过期时成功地发出刷新请求 但现在,我似乎得到了一个错误,它与两件事巧合地相关:Oauth 2.0 YouTube API刷新令牌已被撤销,代码为“400”;无效的“授权”;(似乎没有理由),oauth-2.0,youtube-api,Oauth 2.0,Youtube Api,这是我关于stackoverflow的第一篇文章。来了 我已经构建了一个服务器端PHP应用程序,其中包括读取/更改一个用户的YouTube帐户(更改标题文件)。用户通过OAuth 2进行身份验证。我一直在存储刷新令牌,并在访问令牌过期时成功地发出刷新请求 但现在,我似乎得到了一个错误,它与两件事巧合地相关: 用户上传新视频 周日晚上 我不知道这是否意味着什么 错误发生在尝试刷新访问令牌时,我使用与以前相同的刷新令牌的方法。详情如下: 错误消息: [status code] 400 [reas
- 用户上传新视频
- 周日晚上
[status code] 400
[reason phrase] Bad Request
[url] https://accounts.google.com/o/oauth2/token
[request] POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
User-Agent: Guzzle/2.8.6 curl/7.24.0 PHP/5.3.10
Content-Type: application/x-www-form-urlencoded
client_id=442147492209.apps.googleusercontent.com&client_secret=D7eLQ5b0Mo1Y8uZ30ReWYwls&grant_type=refresh_token&refresh_token=1%2FCLvAt8V_d9sZznpg5YZdJlOJ58ufbHKL4F5Lw8PiJOg
[response] HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Tue, 02 Oct 2012 16:28:24 GMT
Content-Type: application/json
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked
{
"error" : "invalid_grant"
}
如果您想查看源代码,可以在github上查看。以下是进行刷新的相关行号:
(您会注意到,我添加了一个针对此错误的检查,并要求管理员重新授权应用程序……但这远远不够理想)
我看过的其他帖子是告诉人们使用approval\u prompt=force。。。所以我正在这么做
编辑:
我最新的怀疑是,由于每次管理员登录时我都请求脱机访问(approval\u prompt=force),因此我会不断生成新的刷新令牌(除非没有其他可用令牌,否则我不会记录这些令牌)。谷歌的OAuth是否有每个应用程序的最大“活动”刷新令牌数?或者类似的
谢谢 请从以下位置进行检查:
如果在尝试使用时收到无效的\u grant错误响应
如果是刷新令牌,则错误的原因可能是由于以下原因
原因:
不知道?我能提供更多的信息来帮助缩小这个问题吗?这与其说是YouTube API问题,不如说是一般的Google OAuth 2基础设施问题。我会重新录制,也许你会得到更多的关注。另外,你可以试着问一下“不知道这是否有帮助”,但谷歌开发者关系部的一位成员似乎回答了你在这篇文章中的最后一个问题(re:refresh tokens),他说没有记录的上限是25。这是可能的。我最初是这样做的,不会保留最新的令牌,如果令牌有限制,可能会尝试使用足够旧的令牌。我已经编辑了我的代码,但仍然看到问题。。。但我会仔细检查,确保它按预期工作。谢谢