【发布时间】:2017-03-06 20:08:36
【问题描述】:
我在很多问题中都看到了这个问题,但到目前为止,似乎没有一个适用于我的情况。
我们遇到的问题是当我们尝试获取访问令牌时收到“invalid_grant”错误。这只发生在某些帐户上,但是当它发生时,在我查看的每种情况下,刷新令牌以前都有效,现在已经停止工作。这种情况经常发生,因为客户撤销访问权限(过去几周我们管理的近 20% 的渠道似乎已失效)。
请注意,我们有一个将视频上传到客户的 YouTube 频道的后端流程。
-
我们使用 OAuth2 来获取刷新令牌,这里是我们发送的参数...
范围 = "https://www.googleapis.com/auth/youtube", client_id = "", response_type = "代码", access_type = "离线", 批准提示=“强制”, redirect_uri = "http://www.us.com/OAuth/YouTube"
注意:对于 client_id,我们使用 Google API 管理器中的电子邮件地址(或者曾经是,我只是查看了它,但它不再存在)。我们曾经使用此页面中的客户端 ID,但这也给我们带来了问题。这改变了吗?我们现在应该使用此页面中的客户端 ID 吗?
我们将返回的代码交换为刷新和访问令牌,并将刷新令牌存储在我们的数据库中。
后端进程将刷新令牌交换为访问令牌,这就是我们似乎收到“invalid_grant”错误的地方。
保证在任何时候都只使用一个通道的访问令牌(不适用 25 个限制)。我们不存储访问令牌,每次处理频道时都会获得一个新令牌。
任何想法可能会发生什么?有什么要找的吗?请参阅上面有关客户端 ID 的注释。这可能与它有关,但我很犹豫是否尝试它,因为使用 API 管理器中的“客户端 ID”会导致问题。
【问题讨论】:
-
根据我对 OAuth2 的理解(不是很大),我相信您正在滥用该协议。 AFAIK 你应该重复使用访问令牌直到它被拒绝,并且 only 然后你应该使用刷新令牌来获取新的访问令牌。