2016-11-18 21 views
0

以下のコードは、ビーコンのリストを返すことになっています。 Google APIコンソールでAPIキーを生成するときは、公開IPアドレスをホワイトリストに登録し、APIキーに関連付けました。コードがExecuteAsync()メソッドを呼び出すと、エラーコード403(禁止)の例外を受け取ります。私は間違ったことをしたかもしれないし、問題を緩和する方法は?エラー403(禁止)のためGoogle .NET APIが失敗する

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の完全なエラーメッセージを投稿してください。おそらく、Googleがあなたに返すものの一部に過ぎません。 – DaImTo

答えて

1

公開APIキーを使用しています。パブリックAPIキーはパブリックデータでのみ機能します。ビューアで ログインしているユーザーからのOAuthアクセストークンを使用して

beacons.list認証は、所有者であるかの権限を編集することができます。

は以下のOAuthスコープが必要です:
https://www.googleapis.com/auth/userlocation.beacon.registry

•アクセスしようとしている方法は、専用のユーザーデータにアクセスしています。あなたはそれを使用する前に認証されている必要があります。 Oauth2認証に切り替えます。 publicに設定すると、私の知る限りでは公開apiキーのスコープが提供されないため、おそらく動作しません。

+0

@dalmto OAuthアクセストークンはGoogleのAPIコンソールから生成したクライアントIDと同じですか? – Arash

+1

ユーザーがアプリケーションにデータへのアクセスを許可した後、クライアントIDとクライアントシークレットを使用して認証サーバーによってアクセストークンが生成されない – DaImTo

+0

@dalmtoしかし、このコードはユーザーが持っていないサーバーバックエンドへのアクセス。その場合、私は何をすべきですか? – Arash

関連する問題