【问题标题】:How to use access token from google calendar in js如何在js中使用来自谷歌日历的访问令牌
【发布时间】:2021-12-29 09:52:49
【问题描述】:

我有关于谷歌日历的问题,希望你能帮助我。

我有来自谷歌日历的 access_token 并且 access_token 存储在 localStorage 中。

          const googleAccessToken = e.vc.access_token;
          localStorage.setItem('googleAccessToken', googleAccessToken);

现在请帮助我了解如何每次都使用它来避免授权。

例如我想删除所有事件,为此我写了这段代码,这段代码每次都需要我的授权:

   const handleDisconnect = () => {
    gapi.load('client:auth2', () => {
      console.log('loaded client');

      gapi.client.init({
        apiKey: API_KEY,
        clientId: CLIENT_ID,
        discoveryDocs: DISCOVERY_DOCS,
        scope: SCOPES_CLEAR,
      });
      gapi.client.load('calendar', 'v3', () => {
        console.log('sdsd');
      });
      gapi.auth2
        .getAuthInstance()
        .signIn()
        .then(() => {
          var events = bb;
          var makeRequest = resource => {
            console.log(resource);

            var request = gapi.client.calendar.calendars.clear({
              calendarId: 'primary',
            });

            request.execute(resp => {
              console.log(resp);
            });
          };

          for (var j = 0; j < events.length; j++) {
            makeRequest(events[j]);
          }
        });
    });
    };

请帮助我用access_token 修复该代码以避免授权

【问题讨论】:

  • 您的意思是使用service account?如果不能,您能提供更多信息吗?
  • 凯西,假设我们有这样的情况..我是一个普通用户,我想将我的帐户从网站与谷歌日历链接。我创建了同步按钮,单击该按钮 google 想知道他应该链接哪个 google 帐户。在选择帐户作为响应后,我将获得访问令牌并将其存储在 localStorage 中。接下来,我将转到站点中的表单页面并想要创建新事件......但是在再次创建谷歌之后想要与我的一个帐户链接。现在我想了解如何避免帐户关联过程?....我只想关联一次

标签: javascript google-calendar-api


【解决方案1】:

访问令牌在一小时后过期。访问令牌过期后,您需要再次授权用户才能再次访问他们的数据。

通常使用 Oauth2,您可以请求称为离线访问的东西,这将给您一个称为刷新令牌的东西。生产中的应用程序的刷新令牌是长期存在的,并且在大多数情况下不会过期。您可以在需要时使用刷新令牌来请求新的访问令牌。这样一小时后您就不需要授权用户了。

很遗憾,使用 JavaScript 的客户端授权不支持刷新令牌。您需要切换到服务器端语言。

如果您尝试访问开发者拥有的静态日历帐户,而不是用户拥有的日历帐户,您可以使用称为服务帐户的东西。但是,如果您对谷歌工作区账户使用域范围的委派,则服务账户仅适用于谷歌日历,它不适用于标准的 Gmail 日历账户。此外,JavaScript 不支持服务帐户,您需要切换到服务器端编程语言。

毕竟我希望你能看看你是否坚持使用 JavaScript,当访问令牌过期时,你需要请求用户的授权。

【讨论】:

    猜你喜欢
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2013-07-20
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2021-10-25
    相关资源
    最近更新 更多