2016-11-18 76 views
0

下面我的代码片段应该返回信标列表。当Google API控制台生成API密钥时,我已将我的公共IP地址列入白名单并与api密钥关联。当代码调用ExecuteAsync()方法时,我不断收到一个错误代码为403(禁止)的异常。我可能做错了什么以及如何减轻这个问题?谷歌.NET API由于错误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

你添加了灯塔服务在API控制台项目? – davidgyoung

+0

请发布完整的错误消息403禁止可能只是谷歌已经返回给你的一部分。 – DaImTo

回答

1

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

beacons.list身份验证使用从观看者 登录用户的OAuth访问令牌,是所有者或可编辑的权限。

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

您试图访问私有访问用户数据的方法。您需要先进行身份验证才能使用它。切换到Oauth2身份验证。设置为公开可能不会工作,因为你不知道我的知识提供了一个公共API密钥的范围。

+0

@dalmto OAuth访问令牌与我通过Google API控制台生成的客户端ID相同吗? – Arash

+1

没有访问令牌是通过使用客户端ID和客户端密钥认证服务器生成一旦用户已授予他们的数据 – DaImTo

+0

@dalmto您的应用程序的访问,但这段代码应该在我们的服务器的一个工作,用户不必访问后端。那么我应该怎么做呢? – Arash