【问题标题】:Error 401 with Google contacts API on VB NetVB Net 上的 Google 联系人 API 出现错误 401
【发布时间】:2016-01-06 11:09:35
【问题描述】:

我今天做了一个 vb 网络应用程序来获取我的联系人,它工作了一个小时,然后当我尝试使用我的应用程序时,我收到了这个错误:

这是我正在使用的代码:

Imports System.Threading
Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Services
Imports Google.Apis.Util.Store
Imports Google.Contacts
Imports Google.GData.Contacts
Imports Google.GData.Client
Imports Google.GData.Extensions
Public Class Form1
Dim initializer = New BaseClientService.Initializer

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim Secrets = New ClientSecrets()
    Secrets.ClientId = "MYCLIENTID"
    Secrets.ClientSecret = "MYCLIENTSECRET"

    Dim scopes As String() = New String() {"https://www.googleapis.com/auth/contacts.readonly"}
    Try
        Dim credential = GoogleWebAuthorizationBroker.AuthorizeAsync(Secrets, scopes, "email@email.com", CancellationToken.None, New FileDataStore("MYAPPNAME")).Result()
        Dim parameters As New OAuth2Parameters()
        parameters.AccessToken = credential.Token.AccessToken
        parameters.RefreshToken = credential.Token.RefreshToken
        Dim settings As New RequestSettings("MYAPPNAME", parameters)
        Dim cr As New ContactsRequest(settings)
        Dim f As Feed(Of Contact) = cr.GetContacts()
        For Each c As Contact In f.Entries
            MsgBox(c.Name.FullName)
        Next
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
End Sub
End Class

我该如何解决这个问题?

为什么在表现良好之后会发生这种情况?

谢谢

【问题讨论】:

  • HTTP 错误 401 表示您无权访问服务器的内容,这意味着您的登录凭据有问题。
  • 谢谢,但在我这样做之前,你能告诉我为什么应用程序可以运行一个小时而没有错误吗?
  • 我怎么知道?可能发生的情况有无数种。也许你改变了一些你不应该改变的东西?也许谷歌在他们的 API 中改变了一些东西??
  • 你在那一小时内没有碰巧做任何事情,比如向 API 发送大量请求?谷歌使用滑动窗口来限制他们的许多 API。您可能已经超出了某种限制。
  • 根据您发布的图片,错误在第 75 行。我的手机看不到是哪一行,您可以在您的问题中分享吗?

标签: vb.net google-contacts-api


【解决方案1】:

我解决了它改变这一行的形式:

Dim credential = GoogleWebAuthorizationBroker.AuthorizeAsync(Secrets, scopes,"email@email.com", CancellationToken.None, New FileDataStore("MYAPPNAME")).Result()

通过这条线:

Dim credential As UserCredential = GoogleWebAuthorizationBroker.AuthorizeAsync(New ClientSecrets() With {
            .ClientId = "MYCLIENTID",
            .ClientSecret = "MYCLIENTSECRET"
        }, scopes, "email@gmail.com", CancellationToken.None, New FileDataStore("MYAPPNAME")).Result

并取出秘密部分。

谢谢大家的建议。

【讨论】:

  • 我不敢相信,再次,今天不工作,我根本没有做任何更改,这个问题可能是谷歌联系人 API 服务错误吗?我会用细节做另一个问题
猜你喜欢
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多