2016-09-23 8 views
2

I set upサービスアカウントを使用していて、資格情報のjsonファイルをダウンロード中にPERMISSION_DENIEDしました。Google Natural Language API

GoogleNLSample-479e92642552.json 

コード:

InputStream is = getAssets().open("GoogleNLSample-479e92642552.json"); 
GoogleCredential credential = GoogleCredential.fromStream(is).createScoped(CloudNaturalLanguageAPIScopes.all()); 
languageApi = new CloudNaturalLanguageAPI.Builder(new NetHttpTransport(), 
       jacksonFactory, new HttpRequestInitializer() { 
       @Override 
       public void initialize(HttpRequest request) throws IOException { 
       }) 
       .setApplicationName(APPLICATION_NAME).build(); 

AnalyzeEntitiesRequest request = 
        new AnalyzeEntitiesRequest() 
          .setDocument(new Document().setContent(text).setType("PLAIN_TEXT").setLanguage("en")) 
          .setEncodingType("UTF8"); 
final CloudNaturalLanguageAPI.Documents.AnalyzeEntities analyze = languageApi.documents().analyzeEntities(request); 

//Exception here 
AnalyzeEntitiesResponse response = analyze.execute(); 

スタックトレース:

09-23 21:43:27.897 32562-677/com.sample.android W/System.err: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err: { 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err: "code" : 403, 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err: "errors" : [ { 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err:  "domain" : "global", 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err:  "message" : "The request cannot be identified with a client project. Please pass a valid API key with the request.", 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err:  "reason" : "forbidden" 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err: } ], 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err: "message" : "The request cannot be identified with a client project. Please pass a valid API key with the request.", 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err: "status" : "PERMISSION_DENIED" 
09-23 21:43:27.897 32562-677/com.sample.android W/System.err: } 

enter image description here

{ 
    "type": "service_account", 
    "project_id": "***********", 
    "private_key_id": "***********", 
    "private_key": "-----BEGIN PRIVATE KEY-----\n***********\n-----END PRIVATE KEY-----\n", 
    "client_email": "***********", 
    "client_id": "***********", 
    "auth_uri": "***********", 
    "token_uri": "***********", 
    "auth_provider_x509_cert_url": "***********", 
    "client_x509_cert_url": "***********" 
} 
+0

ただ確認するためには、GoogleデベロッパーコンソールであなたのAPPを登録していますか?このエラーはAPIキーに関連しているので、あなたのキーを送信していないか、あなたのキーは別のAPI用です –

+0

@LucasQueirozRibeiro私はAPIキーを登録しましたが、それをどこで使用するのですか?問題のスクリーンショットを確認してください。ありがとう。 –

+0

私はこのAPIを特に使用したことはありませんが、あなたはJsonからAPIを取得していると思います( 'GoogleCredential.fromStream(is)')。他のAPIでは、クライアントが自動的に選択する 'メタデータ 'としてマニフェストのキーを宣言します:' mGoogleApiClient = new GoogleApiClient.Builder(getContext()) .addApi(Places.GEO_DATA_API) .build() ; ' –

答えて

2

私は自然言語のAPI hereのクイックスタート手順をテストすることをお勧めします。具体的には、まずことを確認してください:課金が

  • 自然言語APIを有効になっている

    • あなたはカールといくつかのテストを行っている後enabled

    である、あなたはJavaで実験を開始することができます。

    ただし、APIキーとサービスアカウントの資格情報には違いがあることに注意してください。相違点の詳細な説明については、hereを参照してください。基本的に、APIキーはJSONファイルにはなく、APIとのやりとりを行うもう1つの方法が提供されています。初期に不足している行もありました@のアーチー・BPGCで述べたように :

    編集コールバックcredential.initialize(request);

  • +0

    あなたはどこでテストを実行できますか? – Fematich

    +1

    実際に私は初期化コールバック 'credential.initialize(request);で行が欠落していました;それが問題を解決しました。喜んであなたの答えを追加します。ありがとう。 –

    +0

    ありがとうございました! – Fematich

    関連する問題