我正在开发一个简单的应用程序来检索日历的所有事件。该应用程序只有1个文本框(用于填充帐户),1个datagridview(用于填充所有事件数据)和1个按钮(用于执行)。
当我在文本框中编写我的Google帐户(我在Google API控制台中使用)时,它工作正常,但当我尝试使用其他帐户时(即使他们在浏览器中签名),它会显示404错误。
如何为多个帐户实现它?
这是我获取所有活动的代码:
Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Services
Imports Google.Apis.Calendar.v3
Imports Google.Apis.Calendar.v3.Data
Imports Google.Apis.Calendar.v3.EventsResource
Imports System.Threading
Public Class Form1
Dim scopes As IList(Of String) = New List(Of String)
Dim service As CalendarService
Dim initializer = New BaseClientService.Initializer
Dim Secrets = New ClientSecrets()
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
scopes.Add(CalendarService.Scope.Calendar)
Secrets.ClientId = "CLIENT ID"
Secrets.ClientSecret = "CLIENT SECRET"
Dim credential = GoogleWebAuthorizationBroker.AuthorizeAsync(Secrets, scopes, "DEVELOPER EMAIL", CancellationToken.None).Result()
Dim initializer = New BaseClientService.Initializer
initializer.HttpClientInitializer = credential
initializer.ApplicationName = "APPLICATION NAME"
service = New CalendarService(initializer)
Dim list As IList(Of CalendarListEntry) = service.CalendarList.List().Execute().Items
Dim requeust As ListRequest = service.Events.List(TextBox1.Text)
Me.DataGridView1.DataSource = requeust.Execute.Items
End Sub
End Class
我该怎么办?
感谢。
答案 0 :(得分:0)
据我所知,在所有谷歌API中必须首先创建一个API令牌,虽然您的帐户已经创建了一个新令牌,但其他人没有,所以这可能是您无法成功使用该令牌的原因其他帐户中的API,与Google地图API相同。
请查看如何为所有用户创建来宾帐户API
不确定这对你的问题是否有帮助,但它与你想要的很接近:
How do I connect to the Google Calendar API without the oAuth authentication?
最好的问候,
KT
答案 1 :(得分:0)
404: Not Found表示找不到指定的资源。在某些情况下会发生这种情况。以下是一些例子:
建议实施exponential backoff指数退避的官方Google文档是网络应用程序的标准错误处理策略,其中客户端会在不断增加的时间内定期重试失败的请求。如果大量请求或繁重的网络流量导致服务器返回错误,则指数退避可能是处理这些错误的好策略。相反,它不是处理与速率限制,网络量或响应时间无关的错误的相关策略,例如无效的授权凭证或未找到文件的错误。
正确使用,指数退避可提高带宽使用效率,减少获得成功响应所需的请求数,并最大化并发环境中请求的吞吐量。
关于访问多个帐户,它是决定访问哪个帐户的Oauth令牌,它不是客户端密钥或您正在使用的项目。您可以在控制台中使用同一项目从两个帐户中检索数据。但是,您需要为每个令牌请求单独的OAuth令牌,然后使用它来访问数据。请查看OAuth 2.0文档:https://developers.google.com/identity/protocols/OAuth2