GoogleAPIs for Node.js,如何在没有浏览器和人机交互的情况下在服务器上创建oauth2用户
问题是: 我正在创建一个简单的后台应用程序,它将检查我的谷歌日历帐户上的一些东西。我希望它每周运行一次api调用 日历api需要使用oAuth2。我发现的所有示例都需要人员交互流程:GoogleAPIs for Node.js,如何在没有浏览器和人机交互的情况下在服务器上创建oauth2用户,node.js,oauth-2.0,google-api,Node.js,Oauth 2.0,Google Api,问题是: 我正在创建一个简单的后台应用程序,它将检查我的谷歌日历帐户上的一些东西。我希望它每周运行一次api调用 日历api需要使用oAuth2。我发现的所有示例都需要人员交互流程: 运行方法 服务器要求用户在特殊url上打开浏览器并复制显示在那个里的代码 用户这样做并将代码粘贴到控制台中 服务器验证它并将令牌保存到某个文件中 服务器执行日历api调用 问题是我不想每周都这么做。我希望它只进行一次身份验证,然后在无人值守的情况下运行 一种方法是将tokenexp date设置为超过1周,然后在每
private async initApiKey() {
const client = await auth.getClient();
const calendar = await google.calendar({version: 'v3', client});
const events = await calendar.events.list({
calendarId: 'primary',
timeMin: (new Date()).toISOString(),
maxResults: 10,
singleEvents: true,
orderBy: 'startTime',
});
return client;
}
google.calendar
应该传递给oauthclient,这里的client
是JWTClient。我想我可以强制oAuth,但它会强制浏览器(它甚至使用opn)
如何执行此操作?如果您想代表用户(甚至您自己的用户)发出请求,则必须获得oauth令牌 JWToken用于服务帐户,这些帐户不是实际用户,也没有日历。这些帐户代表谷歌云项目或其他类型的对象执行API操作
OAuth的目的是让用户提供明确的同意,允许在google应用程序中注册的服务器代表他们进行API交互。您需要通过浏览器OAuth来获取令牌。刷新令牌可以在很久以后使用,以保持该令牌的新鲜。您可以存储这些令牌,并在断电或其他重启事件后刷新 好的,我明白了。什么是可能阻止令牌刷新和断开连接的危险?对于文档中的信息,刷新令牌的有效时间可能有限制。它通常足够长,你不必每天做一次以上,甚至可以长达一周。我不确定。