当前位置: 首页 > 知识库问答 >
问题:

谷歌操作 - 访问日历API以插入事件列表

劳麒
2023-03-14

用户已经通过Google Actions使用google sign in获得了gmail帐户的授权。现在,我需要插入谷歌日历的用户事件列表,但我面临一些问题或不知道如何建立它。我对日历api非常陌生,所以请任何人指导我如何解决它。

    const {google} = require('googleapis');
        var calendar = google.calendar('v3');
        const SCOPES = ['https://www.googleapis.com/auth/calendar'];
        const client_secret = "xyz"; 
        const client_id     = "xyz";
        const redirect_uris ="xyz";
        const oAuth2Client = new google.auth.OAuth2(
          client_id, client_secret, redirect_uris);
        oAuth2Client.setCredentials({
         access_token: 'ACCESS TOKEN HERE'
       });
var event = {
  'summary': 'Google I/O 2015',
  'location': '800 Howard St., San Francisco, CA 94103',
  'description': 'A chance to hear more about Google\'s developer products.',
  'start': {
    'dateTime': '2015-05-28T09:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'end': {
    'dateTime': '2015-05-28T17:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
};
calendar.events.insert({
  auth: oAuth2Client,
  calendarId: 'primary',
  resource: event,
}, function(err, event) {
  if (err) {
    console.log('There was an error contacting the Calendar service: ' + err);
    return;
  }
});
  1. 如何使用从google操作收到的idtoken访问用户的google日历
  2. 如何将多个事件插入用户日历

共有1个答案

相德宇
2023-03-14

您通过使用 Google 登录助手获得的 ID 令牌不足以让您访问他们的日历。你将需要访问令牌或身份验证令牌。虽然Google登录对此有所帮助 - 但这并不是完整的情况,解决方案可能有点复杂。

通常,您需要执行以下操作:

>

  • 您需要确保您用于助手的Google Cloud项目已打开日历API。您可以通过Cloud Dashboard的API库来完成此操作。

    您还需要为一个web应用程序(诚实的)创建一个OAuth 2.0客户端id密钥,这是通过云仪表板的凭证页面完成的

    有了这些,再加上谷歌登录,你可以创建一个混合登录策略,让用户登录并授权你的Action使用正确的范围访问他们的日历。

    在登录过程结束时,您将(最终)获得访问令牌和刷新令牌。您将把它存储在数据存储库或某种数据库(例如Firebase FiRecovery)中,并以用户的Google ID作为密钥。

    然后,当他们访问您的操作时,您可以从ID Token获取他们的Google ID,在您的数据库中查找他们的访问令牌,然后执行日历命令。

    关于这个过程的更完整的讨论,请看这篇StackOverflow的文章。

  •  类似资料:
    • 我在我的Angular 9 Web应用程序中使用谷歌日历API,并试图在我的谷歌办公套件域内的谷歌日历上创建事件 在G Suite管理控制台中,我为服务帐户授予了作用域的权限https://www.googleapis.com/auth/calendar和https://www.googleapis.com/auth/calendar.events 我在我的帐户下创建了日历本身,并添加了具有“更改

    • 我希望我的应用在用户的 Google 日历上添加/删除/更新事件。应用只需删除和更新应用本身已添加的事件。 我是否正确地理解了这一点,为了使其正常工作,用户必须向应用程序授予对其Google日历的完全访问权限,这意味着该应用程序可能会读取和删除任何日历上的私人事件? 或者,有没有办法限制用户对应用程序的访问权限,例如,允许应用程序创建单个日历,只允许它访问该日历上的事件? 我已经通读了相关的谷歌日

    • 有没有办法只要求“插入”访问用户的Google日历? 有一个范围:“https://www . Google APIs . com/auth/calendar . events”让我的应用程序对一个用户的所有日历事件拥有完全的读/写权限,但这似乎有些过头了,很可能会让我的用户对我的应用程序的操作产生不信任。

    • 我试图使用delphi REST控件将一个事件插入到我的google日历中。 这是迄今为止的代码: 我使用的范围是:https://www.googleapis.com/auth/calendar. 基本URL:https://www.googleapis.com/calendar/v3 资源URI:日历/主要/事件 我确实获得了访问令牌和刷新令牌,但无法发布请求。这是我收到的错误: 使用以下ur

    • 如果我是对的,timemax='2012-10-25t23:59:59z'-给我的事件可能是从?to this datetime timemin='2012-10-25t23:59:59z'-为我提供了结束此datetime的事件

    • 我正在更新一个Web服务应用程序,该应用程序调用Google的日历API来列出特定日历的日历事件并插入新的日历事件。我正在尝试将其升级到api的版本3。对于身份验证,我使用我在Google Developers Console(https://console.developers.google.com)中创建的服务帐户凭据。我可以使用以下代码创建CalendarService: 但是当我调用lis