Google api 在Node.js中使用Google API:避免重复授权

Google api 在Node.js中使用Google API:避免重复授权,google-api,google-oauth,access-token,Google Api,Google Oauth,Access Token,我正在尝试构建一个API,该API要求每次收到请求时都查看我的Google日历(而不是发送请求的用户的日历)。我的API应该能够响应用户的请求,而不要求我一次又一次地进行身份验证。该API目前托管在Heroku上 为此,我正在跟踪该项目。访问令牌存储在此项目中的token.json文件中。我不明白这个项目是如何处理访问令牌到期的。在这个快速启动项目中,我无法确定访问令牌刷新并重写为token.json的点。当我们第一次创建token.json文件时,我们只是在写入该文件,此后再也不会写入该文件。

我正在尝试构建一个API,该API要求每次收到请求时都查看我的Google日历(而不是发送请求的用户的日历)。我的API应该能够响应用户的请求,而不要求我一次又一次地进行身份验证。该API目前托管在Heroku上

为此,我正在跟踪该项目。访问令牌存储在此项目中的
token.json
文件中。我不明白这个项目是如何处理访问令牌到期的。在这个快速启动项目中,我无法确定访问令牌刷新并重写为
token.json
的点。当我们第一次创建
token.json
文件时,我们只是在写入该文件,此后再也不会写入该文件。在该项目中,访问令牌到期时将如何刷新


我也无法确定应该将
token.json
文件存储在哪里。我尝试手动授权API,然后将获得的令牌作为环境变量存储在heroku上。它昨天工作正常,但给出了
API今天返回了一个错误:error:unauthorized_client
,我认为我的令牌已经过期。如何确保每次用户向API发送HTTP请求时,API不需要我方的重复授权?

您可以通过google cloud IAM&Admin创建服务帐户并生成
服务密钥.json
文件:

然后,在您的代码中,您可以授权使用服务帐户:

import{google}来自'googleapis';
const initAuth=async()=>{
const auth=new google.auth.GoogleAuth({
密钥文件:'./service key.json',//指向service-key.json的路径
范围:['https://www.googleapis.com/auth/drive'],//任何身份验证作用域
});
const authClient=wait auth.getClient();
options({auth:authClient});
};

我在考虑你的问题,而不是说“在快速启动项目中使用token.json”,如果改为“无重复身份验证”或“如何进行一次性身份验证”会更好吗?@charri我当然会改!