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

将事件添加到google日历时出错-权限不足

寿意远
2023-03-14

我正在尝试使用将事件添加到谷歌日历中。Net控制台应用程序作为客户端。我收到以下错误。

谷歌。API。请求。RequestError权限不足[403]错误[消息[权限不足]位置[-]原因[权限不足]域[全局]]

在线上

    service.Events.Insert(newEvent, "primary").Execute()

这是我的代码

    Dim Scopes As String() = {CalendarService.Scope.CalendarReadonly}
    Dim ApplicationName As String = "Google Calendar API .NET Quickstart"
    Dim credential As UserCredential
    Using stream = New FileStream("client_secret.json", FileMode.Open, FileAccess.Read)
        Dim clientSecrets = GoogleClientSecrets.Load(stream).Secrets
        Dim credPath As String = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
        credPath = Path.Combine(credPath, "D:/calendar-dotnet-quickstart.json")
        Dim dataStore = New FileDataStore(credPath, True)
        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(clientSecrets, Scopes, "admin", CancellationToken.None, dataStore).Result
        Console.WriteLine("Credential file saved to: " & credPath)
    End Using

    Dim service = New CalendarService(New BaseClientService.Initializer() With {.HttpClientInitializer = credential, .ApplicationName = ApplicationName})

    Dim newEvent As New Google.Apis.Calendar.v3.Data.Event()
    Dim startDate As New EventDateTime
    Dim endtDate As New EventDateTime
    Dim scope =
    startDate.DateTime = DateTime.Now.AddHours(2)
    endtDate.DateTime = DateTime.Now.AddHours(5)

    newEvent.Summary = "XYZ reminder"
    newEvent.Description = "Please contact dcsdc@cdscs.ss"
    newEvent.Start = startDate
    newEvent.End = endtDate
    newEvent.Id = "1122"


    Try
        service.Events.Insert(newEvent, "primary").Execute() 'Error here
    Catch ex As Exception
        Console.WriteLine(ex.Message & Environment.NewLine & ex.StackTrace)
    End Try

但是,我能够读取使用手动创建的事件

Dim request As EventsResource.ListRequest = service.Events.List("primary")

也尝试过

  1. AuthorizeAsync中设置“用户”。
  2. 服务中将电子邮件地址设置为日历ID。事件。插入
  3. 将范围设置为Dim Scopes As String()={CalendarService。范围。日历}

共有1个答案

宰父远
2023-03-14

问题是你的范围。

Dim Scopes As String()={CalendarService.Scope.CalendarReadonly}

您可以读取,因为您的作用域是CalendarReadonly。

但是,要执行诸如插入事件之类的写入操作,需要使用读/写:

批准

请求需要以下范围的授权(请阅读有关身份验证和授权的更多信息)。

范围

https://www.googleapis.com/auth/calendar

如果更改范围时它不起作用,请记住。NET Quickstart评论说:

//如果修改这些范围,请删除您以前保存的凭据//at~/。凭据/calendar-dotnet-quickstart.json

您修改了范围,您需要删除以前保存的凭据才能使新范围生效。

 类似资料:
  • 我们正在使用API Google开发应用程序。在这个过程中,我们遇到了一些困难。 我们使用了php-sdk,在这个页面上“code . Google . com/p/Google-API-PHP-client/”我们使用了谷歌日历服务。我们遵循位于以下位置的文档:“developers . Google . com/Google-apps/calendar/v3/reference/”日历和事件部

  • 我使用OAuth对我的应用程序进行了身份验证,并使用日历API对其进行了测试。一切正常。我还为事件API使用了“快速添加”方法,效果很好。但是当我尝试使用以下代码插入时 我得到以下错误: 致命错误:未捕获异常“apiServiceException”,消息为“调用POST时出错 https://www.googleapis.com/calendar/v3/calendars/myemail@gma

  • 当将表导出到云存储时,在2017-07-08得到以下错误。 拒绝访问:BigQuery BigQuery:写数据时权限被拒绝 JOBID:Alert-Basis-89415:BQUIJOB_6ADFD86E_15D2DE5CE1B

  • 问题内容: 我是这个网站的新手,我才刚刚开始学习Java。我正在尝试将几天添加到GregorianCalendar中,但是它不起作用。在这里…(忽略顶部的块),其底部的添加日期很烦人。 感谢您阅读本文!我欢迎任何反馈… 问题答案: 这里有太多代码。用户互动过多。 从一种简单的方法开始做一件事,然后在正确的方法上解决。 这是您可能的操作方式: 一旦测试并证明了此方法,您就可以让其余的代码调用它。 更

  • 我需要在日历上创建谷歌日历活动,并将其他用户添加为该活动的参与者。其目的是向应用程序用户发送日历事件,而无需征得他们的同意(O-Auth)。 在阅读了谷歌的留档后,我发现我需要一个服务号。所以我从我们的G-Suite的一个电子邮件地址创建了一个项目和一个服务号,noreply@xxxxx.com并为其启用了日历应用编程接口。 我创建并下载了一个密钥对(JSON),其内容是, 根据文档,我开始编写身