2016-07-30 168 views
0

我正在开发一个简单的应用程序来检索日历的所有事件。该应用程序只有1个文本框(填写帐户),1个datagridview(填写所有事件数据)和1个按钮(执行)。使用Google Calendar API的不同帐户出现404错误(VB.Net)

当我在文本框中编写我的谷歌帐户(我在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

正如我所知道的所有的谷歌API必须首先创建一个API令牌,虽然你的帐户已经创建了一个新的令牌,但对于其他人不是,所以这可能是你无法成功使用的原因其他帐户中的API,与Google地图API相同。

请检查如何为所有用户创建访客帐户API。
不知道的是,可以帮助你的问题,但它是接近你想要的东西:
How do I connect to the Google Calendar API without the oAuth authentication?

最好的问候,
KT

0

404: Not Found意味着指定的资源没有被发现。这可能发生在几种情况下。以下是一些示例:

  • 当请求的资源从未存在时。
  • 访问用户无法访问的日历时。

谷歌官方文档建议实施exponential backoff指数退避是网络应用的标准错误处理策略,其中客户端定期重试随着时间的增加量失败的请求。如果大量请求或繁重网络流量导致服务器返回错误,指数退避可能是处理这些错误的好策略。相反,处理与速率限制,网络数量或响应时间无关的错误(如无效授权证书或文件未发现错误)并不是相关策略。

正确使用时,指数回退会增加带宽使用效率,减少获得成功响应所需的请求数,并最大化并发环境中请求的吞吐量。

关于访问多个帐户,Oauth令牌决定访问哪个帐户,这不是客户端密钥或您正在使用的项目。您可以在控制台中使用相同的项目从两个帐户中检索数据。但是,您需要为每个OAuth令牌申请一个单独的OAuth令牌,然后将其用于访问数据。请检查OAuth 2.0文档:https://developers.google.com/identity/protocols/OAuth2