2016-11-18 96 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