Google API 访问令牌过期后请求无效
Google API invalid request after access token expires
This 是导致我提出这个问题的评论。
我有一个服务器端 Node.js 应用程序,使用 googleapis 包。用户使用他们的 Google 帐户登录,我将令牌存储在他们的会话中。我得到的凭据如下
{ access_token: '<AN ACCESS TOKEN>',
token_type: 'Bearer',
id_token: '<A LONG ID TOKEN>',
expiry_date: <A TIMESTAMP> } // why do some places say there's an expires_in instead of this
没有 refresh_token
因为用户已经第一次登录并点击了接受,我没有存储刷新令牌(看起来我应该存储)。
因此,当达到 expiry_date
时,如果用户试图请求我们将某些内容保存到他们的 google 驱动器,我会收到一条错误消息:
{ [Error: invalid_request] code: 400 } // ...no further details
我的两部分问题:
我假设我收到该错误消息是因为我的 OAuth 客户端对象中的 access_token 已过期(因为调用在令牌过期之前工作正常)。这个对吗?为什么错误信息没有更详细?
在顶部的链接答案中,解决方案是再次强制接受提示,获取刷新令牌并永久存储,并在到期时使用它获取新的访问令牌.为什么这比仅检查令牌是否过期以及在我们想要调用 API 时让用户重新验证更好的选择? "correct" 确保我的登录用户始终可以调用驱动器 API 来保存他们的文档的方法是什么?
对,400
响应是因为访问令牌已过期。我不确定为什么 Google 没有提供更多详细信息,但服务通常使用 400
状态代码来指示某种凭据问题。状态码definition表示是客户端问题
这两种方法都有效,并且各有优缺点。您建议的客户端重新身份验证方法的优点是使实现更简单,因为您不必存储刷新令牌,也不必实现刷新过程。缺点是强制用户每小时重新进行身份验证对用户来说不太友好。至少他们会被重定向离开您的应用程序,并且他们可能还必须明确登录或重新授权。您只需要权衡取舍并选择最适合您的用例的方法。
This 是导致我提出这个问题的评论。
我有一个服务器端 Node.js 应用程序,使用 googleapis 包。用户使用他们的 Google 帐户登录,我将令牌存储在他们的会话中。我得到的凭据如下
{ access_token: '<AN ACCESS TOKEN>',
token_type: 'Bearer',
id_token: '<A LONG ID TOKEN>',
expiry_date: <A TIMESTAMP> } // why do some places say there's an expires_in instead of this
没有 refresh_token
因为用户已经第一次登录并点击了接受,我没有存储刷新令牌(看起来我应该存储)。
因此,当达到 expiry_date
时,如果用户试图请求我们将某些内容保存到他们的 google 驱动器,我会收到一条错误消息:
{ [Error: invalid_request] code: 400 } // ...no further details
我的两部分问题:
我假设我收到该错误消息是因为我的 OAuth 客户端对象中的 access_token 已过期(因为调用在令牌过期之前工作正常)。这个对吗?为什么错误信息没有更详细?
在顶部的链接答案中,解决方案是再次强制接受提示,获取刷新令牌并永久存储,并在到期时使用它获取新的访问令牌.为什么这比仅检查令牌是否过期以及在我们想要调用 API 时让用户重新验证更好的选择? "correct" 确保我的登录用户始终可以调用驱动器 API 来保存他们的文档的方法是什么?
对,
400
响应是因为访问令牌已过期。我不确定为什么 Google 没有提供更多详细信息,但服务通常使用400
状态代码来指示某种凭据问题。状态码definition表示是客户端问题这两种方法都有效,并且各有优缺点。您建议的客户端重新身份验证方法的优点是使实现更简单,因为您不必存储刷新令牌,也不必实现刷新过程。缺点是强制用户每小时重新进行身份验证对用户来说不太友好。至少他们会被重定向离开您的应用程序,并且他们可能还必须明确登录或重新授权。您只需要权衡取舍并选择最适合您的用例的方法。