我正在尝试使用控制台应用程序作为客户端将事件添加到谷歌日历.Net
。我收到以下错误。
Google.Apis.Requests.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")
也尝试过
- 在
AuthorizeAsync
中设置"用户"。 - 在
service.Events.Insert
中将电子邮件地址设置为日历ID - 将范围设置为
Dim Scopes As String() = {CalendarService.Scope.Calendar}
问题是你的范围。
将范围调暗为 string(( = {CalendarService.Scope.CalendarReadonly}
您可以阅读,因为您的范围是日历只读。
但是,要执行插入事件等写入操作,您需要使用读/写:
授权
此请求需要具有以下范围的授权(详细了解身份验证和授权(。
范围
https://www.googleapis.com/auth/calendar
如果在更改范围时它不起作用,请记住 .NET 快速入门注释中的内容:
如果修改这些范围,请删除之前保存的内容 凭据 at ~/.credentials/calendar-dotnet-quickstart.json
您修改了范围,需要删除以前保存的凭据才能使新范围生效。