gpt4 book ai didi

node.js - 访问 token 过期后的 Google API 无效请求

转载 作者:搜寻专家 更新时间:2023-11-01 00:39:38 27 4
gpt4 key购买 nike

This是导致我问这个问题的评论。

我有一个服务器端 Node.js 应用程序,使用 googleapis 包。用户使用他们的 Google 帐户登录,我将 token 存储在他们的 session 中。我得到的凭据如下

{ 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 因为用户已经第一次登录并点击了接受,而我没有存储刷新 token (看起来我应该存储)。

因此,当到达 expiry_date 时,如果用户试图请求我们将某些内容保存到他们的 google 驱动器,我会收到一条错误消息:

{ [Error: invalid_request] code: 400 } // ...no further details

我的两部分问题:

  • 我假设我收到该错误消息是因为我的 OAuth 客户端对象中的 access_token 已过期(因为调用在 token 过期前工作正常)。这样对吗?为什么报错信息没有更详细?

  • 在顶部的链接答案中,解决方案是再次强制接受提示,获取刷新 token 并永久存储,并在到期时使用它获取新的访问 token 。为什么这比仅检查 token 是否过期并在我们要调用 API 时让用户重新验证更好的选择?确保我的登录用户始终可以调用驱动器 API 来保存他们的文档的“正确”方法是什么?

最佳答案

  1. 是的,400 响应是因为访问 token 已过期。我不确定 Google 为什么不提供更多详细信息,但服务通常使用 400 状态代码来指示某种凭据问题。 definition状态代码表示这是一个客户端问题。

  2. 这两种方法都有效,并且各有优缺点。您建议的客户端重新身份验证方法的优点是使实现更简单,因为您不必存储刷新 token ,也不必实现刷新过程。缺点是强制用户每小时重新进行身份验证对用户来说不太友好。至少他们会被重定向离开您的应用程序,并且他们可能还必须明确登录或重新授权。您只需权衡取舍并选择最适合您的用例的方法。

关于node.js - 访问 token 过期后的 Google API 无效请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39298451/

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