0

我下面的代码片段应该返回信标列表。当让 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);
        }
    }
}
4

1 回答 1

1

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

beacons.list使用来自具有查看者、是所有者或可以编辑权限的登录用户的 OAuth 访问令牌进行身份验证。

需要以下 OAuth 范围:
•<a href="https://www.googleapis.com/auth/userlocation.beacon.registry" rel="nofollow noreferrer">https://www.googleapis.com/auth/userlocation .beacon.registry

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

于 2016-11-18T09:22:58.727 回答