2017-10-26 12 views
2

私はgoogle tranlation APIを活用したい小さなスラックボットを実装しようとしていますが、うまくいくためには苦労しています。私は1つのリクエストを実行することができましたが、その1つのリクエストが成功した後は、常に「403 - Daily Limit Exceeded」というメッセージが表示されます。.NETクライアントをGoogle翻訳APIに使用すると、毎日制限を超過するのを修正するにはどうすればよいですか?

私はF#を使用していて、私の単純なコードは次のようになります。

module Translation = 
    open Google.Cloud.Translation.V2 
    let client = TranslationClient.Create() 

    let detectLanguage text = 
     let detection = client.DetectLanguage(text) 
     let res = sprintf "%A %A %A %A" detection.Confidence detection.IsReliable detection.Language detection.Text 
     res 

私は "detectLanguage" を呼び出すとき、私は戻って、この例外を取得:

未処理の例外:Google.GoogleApiException: Google.Apis.Requests.RequestError超過 値幅制限[403] エラー[ メッセージ[値幅制限超過]場所[ - ]理由[dailyLimitExceeded]ドメイン[usageLimits] ] でGoogle.Cloud.Translation.V2.TranslationClient.DetectLanguageでGoogle.Apis.Requests.ClientServiceRequest 1.Execute() at Google.Cloud.Translation.V2.TranslationClientImpl.DetectLanguages(IEnumerable 1 textItems) (文字列テキスト)

私はコンソールをチェックすると、私はすべての要求が行われたことを見ることができません私はそれが正しく設定されていないかもしれないと思っています。どうすればこの問題を回避できますか?

私はフォーラムで質問を投稿しましたhttps://groups.google.com/forum/#!topic/google-translate-api/5JHj3RLrH7o、最初に私は正しく認証する必要があるというコメントを得ました。私が理解している限り、.NETクライアントTranslationClient.Create()は、指定していない場合はデフォルトの認証情報を使用する必要があります。これは、他のすべてのGoogleツールで使用できます。

答えて

4

はい、TranslationClient.Createは、既定の資格情報を使用します - しかし、この場合には、それはあなたがローカルでこれを実行していると仮定すると、ほぼ確実に彼らは間違っデフォルトの資格だケースです。 Google Cloud Platformでこれを実行している場合は問題ではありません。これはうまくいくはずの「環境」認証情報を使用するものです。 (そうでない場合は、コメントで私に知らせてください)

gcloud auth application-default loginなどを実行してデフォルトのアプリケーション認証情報を取得している場合は、資格情報を送信しますが、間違ったクォータを使いこなそうとしている。なぜ私はそれが間違っていると部分的に複雑な混乱のためにそれを得るだろうために、私は複雑な詳細には進まないでしょう。申し訳ありません。

良いニュースは、修正するのがかなり簡単だということです。基本的には、you want to use service account credentials:あなたはすでに資格情報 JSONファイルの場所ということを指定するには、GOOGLE_APPLICATION_CREDENTIALS環境変数を設定し

  • とJSONファイルをダウンロード1
  • を持っていない場合

    • は、サービスアカウントを作成します。

      デフォルトのアプリケーション認証情報は、その認証情報ファイルを読み込んで認証に使用します。クォータのための適切なプロジェクトを使用し、すべてがうまくいくはずです。

  • +0

    このようなサウンドは、それでいいかもしれませんが、今日後でテストして検証します。他のすべてのタイプのサービスのように、「自分の」資格情報を使用する方法はありますか、それをローカルで実行したい場合はサービスアカウントが必要ですか?特定のプロジェクトをターゲットにするように認証を強制するのと同じですか? –

    +0

    @TomasJansson:実際には、実際のユーザーの資格情報を取得する可能性がありますが、gcloud認証資格情報を使用することはできません。サービスアカウントは推奨されるアプローチです。 –

    関連する問題