【问题标题】:Google .NET API fails due to error 403 (forbidden)由于错误 403(禁止),Google .NET API 失败
【发布时间】:2016-11-18 04:13:35
【问题描述】:

我下面的代码 sn-p 应该返回信标列表。当让 Google API 控制台生成 API 密钥时,我已将我的公共 IP 地址列入白名单并与 api 密钥相关联。当代码调用 ExecuteAsync() 方法时,我不断收到错误代码 403(禁止)的异常。我可能做错了什么以及如何缓解问题?

public async void TestApiKey()
{
    var apikey = "739479874ABCDEFGH123456"; //it's not the real key I'm using
    var beaconServices = new ProximitybeaconService(new Google.Apis.Services.BaseClientService.Initializer
    {
        ApplicationName = "My Project",
        ApiKey = apikey
    });

    var result = await beaconServices.Beacons.List().ExecuteAsync();

    // Display the results.
    if (result.Beacons != null)
    {
        foreach (var api in result.Beacons)
        {
            Console.WriteLine(api.BeaconName + " - " + api.Status);
        }
    }
}

【问题讨论】:

  • 您是否已在 API 控制台中将 Beacon 服务添加到您的项目中?
  • 请发布完整的错误消息 403 禁止可能只是谷歌返回给您的部分内容。

标签: c# google-api google-beacon-platform


【解决方案1】:

您正在使用公共 API 密钥。公共 API 密钥仅适用于公共数据。

beacons.list 使用来自 具有查看者、所有者或可以编辑权限的登录用户。

需要以下 OAuth 范围:
•https://www.googleapis.com/auth/userlocation.beacon.registry

您尝试访问的方法是访问私人用户数据。您需要进行身份验证才能使用它。切换到 Oauth2 身份验证。将其设置为 public 可能不起作用,因为据我所知,您无法为公共 api 密钥提供范围。

【讨论】:

  • @dalmto OAuth 访问令牌是否与我通过 Google 的 API 控制台生成的客户端 ID 相同?
  • 一旦用户授予您的应用程序对其数据的访问权限,身份验证服务器不会使用客户端 ID 和客户端密码生成访问令牌
  • @dalmto 但是这段代码应该可以在我们的一台服务器上运行,在该服务器上用户无权访问后端。那我该怎么办呢?
  • @dalmto 我取得了一些进展,但我遇到了这个问题中提到的另一个问题:stackoverflow.com/questions/40705660/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 1970-01-01
  • 2013-04-05
  • 2022-10-08
  • 2013-12-26
  • 1970-01-01
  • 2021-11-26
相关资源
最近更新 更多