如何解决在Node.js中使用Google API:避免重复授权
我正在尝试构建一个API,该API要求每次收到请求时都要查看我的Google日历(而不是发送请求的用户的日历)。我的API应该能够响应用户的请求,而无需要求我一次又一次地进行身份验证。该API当前托管在Heroku上。
为此,我正在关注Quickstart项目。访问令牌存储在该项目的struct A<'a> {
borrow: &'a mut u8,}
/// We add the relation 'b: 'c
fn does_nothing<'b: 'c,'c>(a: &'b mut A<'c>) {
a.borrow = a.borrow;
}
文件中。我不了解该项目如何处理访问令牌的过期。在此快速入门项目中,我无法确定刷新访问令牌并将其重写为token.json
的地方。我们只会在第一次创建token.json
文件时写入它,此后再也不会写入。该项目到期后如何刷新访问令牌?
我也无法确定应该将token.json
文件存储在哪里。我尝试手动授权API,然后将获得的令牌作为环境变量存储在heroku上。昨天工作正常,但今天给出token.json
,我认为令牌已经过期。如何确保每次用户向HTTP发送API请求时,API都不需要我方的重复授权?
解决方法
您可以通过Google云端IAM和管理员创建服务帐户并生成service-key.json
文件:
screenshot of where IAM & Admin can be found
然后,您可以在代码中使用服务帐户进行授权:
import {google} from 'googleapis';
const initAuth = async () => {
const auth = new google.auth.GoogleAuth({
keyFile: './service-key.json',//path to service-key.json
scopes: ['https://www.googleapis.com/auth/drive'],//any auth scopes
});
const authClient = await auth.getClient();
google.options({auth: authClient});
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。