【问题标题】:Oauth2 on Google Contacts API For DotNet - Token Invalid – AuthSub token has wrong scope用于 DotNet 的 Google 联系人 API 上的 Oauth2 - 令牌无效 - AuthSub 令牌的范围错误
【发布时间】:2012-09-21 13:28:30
【问题描述】:

我创建了一个类,该类授权 vb.net 应用程序使用 Oauth2 访问 Google Fusion Tables。如果需要,它会以某种形式打开 Web 浏览器,加密并存储刷新令牌,并且运行良好。我可以访问融合表数据。

不过,我还想访问通讯录。我已请求用户访问联系人。

我可以检索适用于融合表的 AccessToken,并尝试了不同的技术来处理联系人,但没有运气。我不断收到 401 未经授权的错误。但如果我使用客户端登录,我可以让联系人工作。

任何帮助将不胜感激。

我最近的尝试:

Dim rs As New RequestSettings("App Name", p.AccessToken) 'String retrieved from class
Dim cr As New ContactsRequest(rs)
Dim q As New FeedQuery
q.Uri = New Uri("http://www.google.com/m8/feeds/contacts/<EMAIL>/full/<IDCODE>")
Dim c As New Contact
c = cr.Retrieve(Of Contact)(q)

【问题讨论】:

    标签: google-api oauth-2.0


    【解决方案1】:

    您必须请求访问联系人 API OAuth 范围,即 https://www.google.com/m8/feeds/

    .NET 客户端库包含一个使用联系人 API 的 OAuth 2.0 示例:

    https://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs

    【讨论】:

      【解决方案2】:

      感谢 Claudio Cherubino 的建议。我实际上已经在使用那个范围了。谢天谢地,我现在终于找到了答案。

      我确实漏掉了一个字母:

      q.Uri = New Uri("http://www.google.com/m8/feeds/contacts/<EMAIL>/full/<IDCODE>")
      

      ... 是错误的,因为我要求的范围确实是:

      https://www.google.com/m8/feeds/
      

      所以 Uri 需要与 httpS 匹配。我添加了's'并且它有效。正确代码如下:

      q.Uri = New Uri("https://www.google.com/m8/feeds/contacts/<EMAIL>/full/<IDCODE>")
      

      非常感谢这篇文章的回答: http://www.geoffmcqueen.com/2010/03/14/token-invalid-authsub-token-has-wrong-scope-oauth-google-problem

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-27
        • 2011-04-15
        • 1970-01-01
        • 2012-09-07
        • 2013-05-02
        • 1970-01-01
        相关资源
        最近更新 更多