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

谷歌日历API:在谷歌商业帐户上设置谷歌日历事件创建时,作家访问错误

齐财
2023-03-14

我在我的Angular 9 Web应用程序中使用谷歌日历API,并试图在我的谷歌办公套件域内的谷歌日历上创建事件

在G Suite管理控制台中,我为服务帐户授予了作用域的权限https://www.googleapis.com/auth/calendar和https://www.googleapis.com/auth/calendar.events

我在我的帐户下创建了日历本身,并添加了具有“更改事件”权限的服务帐户

注意:我尝试了正常的gmail帐户。它正在工作。但是当我尝试谷歌商业帐户时,我有上述问题(比如设置谷歌日历事件创建时的作家访问错误)。

我使用以下代码保存日历事件:

请查看下面的屏幕截图。

js prettyprint-override">const jwtClient = new google.auth.JWT(
    GOOGLE_CLIENT_EMAIL,
    null,
    GOOGLE_PRIVATE_KEY,
    ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.events']
);
const calendar = google.calendar({
    version: 'v3',
    project: GOOGLE_PROJECT_NUMBER,
    auth: jwtClient
});
var appointment_data = {
    summary: 'xyz',
    location: 'Location info',
    description: 'Some description',
    start: {
        'dateTime': dataObj.appt_startdate_time,
        'timeZone': dataObj.appt_timeZone,
    },
    end: {
        'dateTime': dataObj.appt_enddate_time,
        'timeZone': dataObj.appt_timeZone,
    },
    attendees: [
        {
            "displayName": 'Xyz',
            "email": 'xyz@gmail.com'
        }
    ]
}
calendar.events.insert({
    calendarId: GOOGLE_CALENDAR_ID,
    resource: appointment_data,
}, function (err, event) {
    if (err) {
        console.log('There was an error contacting the Calendar service: ' + err);
        return;
    }
})

共有1个答案

拓拔弘化
2023-03-14

您没有将模拟电子邮件地址添加到JWT构造函数方法中。

在创建活动时,您必须添加要模拟的域用户的电子邮件地址:

var key = require('/path/to/service-account-credentials.json');

const SCOPES = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.events'];

var jwtClient = new google.auth.JWT(
    key.client_email,
    null,
    key.private_key,
    SCOPES,
    'impersonating-email-address' // Add this parameter
);

现在,如果你正确地遵循这些说明,它应该可以完美地工作。

传奇API服务帐户

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

  • 我能够使用服务帐户和谷歌日历API在谷歌日历中创建一个事件,其中项目和服务帐户是在谷歌工作区管理员帐户中创建的,在同一个帐户中,我启用了域范围的委派属性。我还没有创建单独的日历,也没有授予访问服务帐户的权限。如果我在CreateDelegate()中使用我的工作区google帐户,则此事件将在'abc@myworkspace.com对于我添加的每个与会者,“日历”和“创建人”属性也是相同的。 所以

  • 我收到了这个错误 已经跟踪了https://developers.google.com/admin-sdk/directory/v1/guides/delegation 我使用这个库,并在laravel 5.7:https://github.com/spatie/laravel-google-calendar上运行它 有什么办法可以解决这个问题。请帮忙。

  • 我正在使用Google. net客户端库来访问谷歌日历应用编程接口。我需要研发创建日历事件并将其发布给用户的应用程序。 这是一个服务器到服务器的应用程序,所以我创建了一个服务帐户,并用它来发送邀请。当从web浏览器提交响应时,创建的与会者对这些事件的响应将被更新,但当来自outlook等任何邮件客户端的响应时,响应将以电子邮件的形式发送给服务帐户电子邮件id(这是一个虚拟电子邮件id)。如何将有效

  • 我想知道我是否需要Google java客户端库才能从GAE访问我的Google日历。默认情况下,它们是Google App Engine SDK的一部分吗? 此外,我找不到一个很好的示例或教程来展示如何从Google Cloud Platform应用程序创建、读取、更新和删除Google日历事件。 非常感谢,如果您可以提供相同的代码示例或链接到适当的工作教程。

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