- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在很多问题中都看到过这个问题,但到目前为止,似乎没有一个适用于我的情况。
我们遇到的问题是当我们尝试获取访问 token 时遇到“invalid_grant”错误。这只发生在某些帐户上,但当它确实发生时,在我查看的每种情况下,刷新 token 以前都有效,现在已停止工作。这种情况经常发生,因为客户撤销了访问权限(似乎我们在过去几周管理的 channel 中有近 20% 已失效)。
请注意,我们有一个后端流程可以将视频上传到我们客户的 YouTube channel 。
我们使用 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 吗?
我们将返回的代码交换为刷新和访问 token ,并将刷新 token 存储在我们的数据库中。
后端进程将刷新 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/
我正在尝试向 Google 联系人 API 验证我的应用程序。我已经完成了 Oauth2 流程的第一步并获得了授权码。我正在尝试将此代码交换为访问 token 和刷新 token ,但是当我尝试从 g
我正在尝试将 Google Plus API 集成到我的网络应用程序中。 我能够通过 Google 进行身份验证并获得代码。当我尝试使用 HttpClient 获取 access_token 时,会出
DocuSign documentation通过易于遵循的授权流程进行代码授予。我能够从初始 GET 请求中获取“代码”到/oath/auth,但是当我在 postman 中尝试时,获取 token
我正在尝试使用我的值设置 config.php,但出现此 fatal error : fatal error :未捕获的异常“Google_AuthException”,消息为“获取 OAuth2 访
我一直在尝试创建一个 access_token对于我的 api。我已经 followed the setup并且正在使用 Postman 测试/创建 token 。我似乎无法通过 invalid_gr
我正在尝试从基于站点的 WebService 调用 Azure 托管 WebAPI。基于站点的服务是 adal-angluar SPA,然后必须调用 Azure 中托管的 REST API。来自 AA
我关注了这个资源:https://REDACTED.b2clogin.com/REDACTED.onmicrosoft.com/B2C_1A_DEMO_CLIENTCREDENTIALSFLOW/oa
我正在使用 Java 运行 Analytics-cmdline-sample 应用程序。我使用的是 Maven 2.2.1,我在 Google Api 控制台中创建了 client_Id 和 clie
我关注了这个资源:https://REDACTED.b2clogin.com/REDACTED.onmicrosoft.com/B2C_1A_DEMO_CLIENTCREDENTIALSFLOW/oa
在尝试使用 Active Directory 进行身份验证以检索访问 token 时,我按照以下步骤操作: 1 - 按照以下说明在 Azure 中创建应用程序(步骤 3): https://githu
我想做什么:我正在将 Spotify SDK 实现到我的 iOS 项目中。我已成功收到 Spotify API 的访问 token ,因为我能够使用所述 API 执行搜索艺术家、搜索歌曲和查看播放列表
当 OAuth2Credential 对象尝试刷新其 access_token 时,有时它会收到 invalid_grant 错误,然后变得无法刷新。我使用的代码基于 Google 的 python
我正在创建一个 API 来包装 google oauth。我正在使用谷歌Python客户端库。 api.py 中的代码 from flask import request, g from ..help
我已经查看了关于此主题的其他问题,它似乎与我的错误不符。运行 Google Sheets APIv4 时出现错误: 引发 HttpAccessTokenRefreshError(error_msg,
最近我一直在为这个问题烦恼。 一些背景 使用oauth2client库来管理用户的 token 。 token 用于定期并发执行各种后台任务。 每次这些任务之一即将为用户运行时,我们都会从存储中获取凭
我正在尝试构建一个访问 Google Analytics API 并提取数据的网络应用程序。但是,我在 OAuth 2.0 授权方面遇到了一些问题。 它允许成功的初始访问,但它很快将我踢出并在我点击刷
我正在尝试使用 Mailchimp 的 OAuth 完成身份验证实现,我的访问 token 请求正在获取“无效授权”错误。 使用 ruby HTTParty gem,我将数据发布到 Mailchi
我创建了自己的网站 (www.luig.us)。我为 SQL 服务器创建了一个基本的 IDE,只教 child SQL,DML。 它要求用户在开始时输入用户名和密码以获得使用服务的 token 。 在
在 https://appleid.apple.com/auth/token 中尝试从 Apple 获取 oAuth token 时,我一直收到 invalid_grant 错误接口(interfac
我在我的 Raspberry PI 上使用 Google Cloud Vision API。当我在我的家庭(首次访问云帐户)网络上使用它时,它工作正常,但如果我从不同的网络访问 API,它会引发 to
我是一名优秀的程序员,十分优秀!