我的下面的代码片段应该返回信标列表。当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);
}
}
}
答案 0 :(得分:1)
您正在使用公共API密钥。公共API密钥仅适用于公共数据。
beacons.list使用来自的OAuth访问令牌进行身份验证 登录用户与查看者,是所有者或可以编辑权限。
需要以下OAuth范围:
•https://www.googleapis.com/auth/userlocation.beacon.registry
您尝试访问的方法是访问私人用户数据。您需要先进行身份验证才能使用它。切换到Oauth2身份验证。将它设置为公共可能无法正常工作,因为您无法通过我的知识为公共API密钥提供范围。