【问题标题】:Is there is a way to grant my nodejs application access to my google calendar?有没有办法授予我的 nodejs 应用程序访问我的谷歌日历的权限?
【发布时间】:2020-07-10 18:25:26
【问题描述】:

所以我有一个 nodejs 应用程序,可以向某些人发送谷歌日历中的活动邀请,现在我正在使用我的 gmail 帐户和 OAuth Playground 来获取临时访问令牌并且它可以工作,但访问令牌只是可用几分钟,每次我需要手动刷新访问令牌并授予对我的谷歌帐户日历的访问权限,这就是问题所在,现在我想在不干预过程的情况下进行动态处理。 此应用程序托管在 wix 中。 有什么建议 ? 谢谢

【问题讨论】:

    标签: node.js google-api google-calendar-api google-apis-explorer google-api-nodejs-client


    【解决方案1】:

    如果您只允许他们访问您拥有和控制的日历,那么您可以使用服务帐户。

    let google = require('googleapis');
    let privatekey = require("./privatekey.json");
      Now let’s use the private key to configure a JWT auth client and authenticate our request.
        // configure a JWT auth client
        let jwtClient = new google.auth.JWT(
               privatekey.client_email,
               null,
               privatekey.private_key,
               ['https://www.googleapis.com/auth/calendar']);
        //authenticate request
        jwtClient.authorize(function (err, tokens) {
         if (err) {
           console.log(err);
           return;
         } else {
           console.log("Successfully connected!");
         }
        });
    

    在 Google 开发者控制台中创建服务帐户凭据。然后获取服务帐户电子邮件地址并通过谷歌日历网站与其共享日历。您拥有的其余代码应该相同,只需将 auth 部分换成 this。

    【讨论】:

    【解决方案2】:

    要访问日历 API,请关注Quickstart

    所提供的代码会创建一个refresh token,当旧的访问令牌过期时,它将自动为您生成一个新的访问令牌。

    小心不必要地使用服务帐户,尤其是在将受邀者添加到日历活动时 - 目前有 issues 具有此功能。

    【讨论】:

    • 首先,感谢您的回复和时间,但我的第一个工作建立在此快速入门之上。这里的问题就像我说的它要求用户手动授予权限。
    • 是的,出于安全原因,要求用户手动授予权限是 OAuth2 的预期行为。如果这是一个问题,您可能会对offline access 感兴趣。在这种情况下,用户只需手动授予一次权限。More 该主题。
    猜你喜欢
    • 2019-12-16
    • 2016-04-01
    • 2020-10-28
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多