2016-09-23 5 views
2

I set up 서비스 계정을 사용하고 자격 증명 json 파일을 다운로드하는 동안 PERMISSION_DENIEDGoogle 자연어 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

그냥 확인 credential.initialize(request);, 당신은 구글 개발자 콘솔 당신에게 APP를 등록? 이 오류는 API 키와 관련이 있으므로 키를 보내지 않거나 키가 다른 API 용임 –

+0

@LucasQueirozRibeiro API 키를 등록했지만 사용 위치는 어디입니까? 문제의 스크린 샷을 확인하십시오. 감사. –

+0

나는이 API를 특별히 사용한 적이 없지만 Json ('GoogleCredential.fromStream (is)')에서 API를 얻고 있다고 생각합니다. 다른 API에서는 manifest에서 클라이언트가 자동으로 선택하는 '메타 데이터'로 선언합니다. 'mGoogleApiClient = new GoogleApiClient.Builder (getContext()) .addApi (Places.GEO_DATA_API) .build() ; ' –

답변

2

내가 자연 언어 API here의 빠른 단계를 테스트하는 것이 좋습니다. 구체적으로 먼저 있는지 확인한다 : 당신은 컬 몇 가지 테스트를 수행 한 후

  • 청구는
  • 자연 언어 API를 사용할 수 enabled

을, 당신은 Java에서 실험을 시작할 수 있습니다.

그러나 API 키와 서비스 계정 자격 증명에는 차이가 있습니다. 차이점에 대한 자세한 설명은 here을 참조하십시오. 기본적으로 API 키는 JSON 파일에 없으며 API와 상호 작용할 수있는 또 다른/더 쉬운 방법을 제공합니다.

편집 : @에 의해 언급 한 바와 같이 아치가-bpgc도 있었다 초기화에서 누락 라인 : 콜백

+0

테스트를 수행 할 수있는 곳은 어디입니까? – Fematich

+1

사실 저는 초기화 콜백'credential.initialize (request);에 행이 누락되었습니다. '문제가 해결되었습니다. 벼룩이 답을 추가합니다. 감사. –

+0

업데이트 해 주셔서 감사합니다! – Fematich