gpt4 book ai didi

youtube-api - 将刷新 token 交换为访问 token 时出现 "invalid_grant"错误

转载 作者:行者123 更新时间:2023-12-04 17:56:24 25 4
gpt4 key购买 nike

我在很多问题中都看到过这个问题,但到目前为止,似乎没有一个适用于我的情况。

我们遇到的问题是当我们尝试获取访问 token 时遇到“invalid_grant”错误。这只发生在某些帐户上,但当它确实发生时,在我查看的每种情况下,刷新 token 以前都有效,现在已停止工作。这种情况经常发生,因为客户撤销了访问权限(似乎我们在过去几周管理的 channel 中有近 20% 已失效)。

请注意,我们有一个后端流程可以将视频上传到我们客户的 YouTube channel 。

  1. 我们使用 OAuth2 获取刷新 token ,这是我们发送的参数...

    scope = "https://www.googleapis.com/auth/youtube ",client_id = "",response_type = "代码",access_type = "离线",approval_prompt = "强制",redirect_uri = "http://www.us.com/OAuth/YouTube "

注意:对于 client_id,我们使用 Google API 管理器中的电子邮件地址(或者,我刚刚查看,但它不再存在)。我们曾经使用此页面中的客户端 ID,但这也给我们带来了问题。这改变了吗?我们现在应该使用此页面中的客户端 ID 吗?

  1. 我们将返回的代码交换为刷新和访问 token ,并将刷新 token 存储在我们的数据库中。

  2. 后端进程将刷新 token 交换为访问 token ,这就是我们似乎收到“invalid_grant”错误的地方。

保证在任何时候只有一个 channel 的访问 token 在使用中(25 个限制不适用)。我们不存储访问 token ,每次处理 channel 时都会获得一个新的访问 token 。

任何想法可能会发生什么?有什么要找的吗?请参阅上面关于客户端 ID 的注释。这可能与它有关,但我犹豫是否要尝试它,因为之前使用 API 管理器的“客户端 ID”导致了问题。

最佳答案

Guaranteed only a single access token for the channel is in use at any time (25 limit doesn't apply). We don't store the access token, we get a fresh one every time we process a channel.

这种说法是不正确的:访问 token 可以根据需要多次使用,只要它们仍然有效(一个小时)。

回答:

“invalid_grant”基本上意味着您的刷新 token 不再有效。解决该问题的唯一方法是再次请求访问并获得新的访问权限。问题应该是为什么它首先会过期。

假设用户没有撤​​销访问权限,并且在过去六个月内已使用刷新 token 请求新的访问 token 。这可能是它被覆盖的问题。

当用户对您的应用程序进行身份验证时,您将获得一个刷新 token 。此刷新 token 与您的应用程序的客户端 ID 和刚刚通过身份验证的用户相关联。如果所述用户随后再次对您的应用程序进行身份验证,您将获得另一个刷新 token 。同样,此刷新 token 与用户和您的项目客户端 ID 相关联。这两个刷新 token 都可以使用。您的用户最多可以继续执行此操作 25(请注意,我认为最近已将其更改为 50,但我尚未使用所有 API 对其进行测试)一旦他们达到此神奇数字,第一个刷新 token 将过期,如果您尝试使用你将获得无效的授权。

唯一的解决方案就是再次请求身份验证。始终保存您的用户授予您的应用程序的最新刷新 token 非常重要。万一(像我一样)你有一个应用程序存储在许多服务器上,所有这些服务器都需要身份验证。您将不得不告诉他们不要多次刷新它,否则他们将不得不返回并重新验证他们过期的第一个。

如果您的所有请求都出现这种情况。您还可以检查您的服务器是否与 ( NTP) 同步,以及您是否在 post 字段中发送请求的有效负载。不像 HTTP GET 那样附加到身份验证端点(在那里完成)。

关于youtube-api - 将刷新 token 交换为访问 token 时出现 "invalid_grant"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com