2017-01-09 9 views
0

Итак, я изменил код Google Speech API. Пример кода (не работал до того, как он был), чтобы быть наравне с уведомлением об обновлении (относительно устаревания в ClientAuthenticator) и получить такая же ошибка, как и раньше, без разрешения, с хозяином быть speech.googleapis.com/v1beta1/speech:asyncrecognize?key=My_Key мой код выглядит следующим образом:API Google Speech API возвращает PERMISSION_DENIED запрос не может быть идентифицирован с клиентским проектом

public static ManagedChannel createChannel(String host) throws IOException { 
    FileInputStream filestream = new FileInputStream("/home/admin/creds.json"); 

    GoogleCredentials creds = GoogleCredentials.fromStream(filestream).createScoped(OAUTH2_SCOPES); 

    ManagedChannel channel = ManagedChannelBuilder.forTarget(host).build(); 
    GreeterGrpc.GreeterStub stub = GreeterGrpc.newStub(channel); 
    stub = stub.withCallCredentials(MoreCallCredentials.from(creds)); 
    System.out.println(channel.authority()+creds); 

    filestream.close(); 

    return channel; 
} 

но он просто возвращает

WARNING: RPC failed: Status{code=PERMISSION_DENIED, description=The  request cannot be identified with a client project. Please pass a valid API key with the request., cause=null} 

любую помощь или совет приветствуется, спасибо!

+1

Код, который вы предоставили, используется с помощью 'GreeterGrpc' - разве вы не должны использовать заглушку Speech API? Откуда вы взяли 'creds.json'? (Это определенно файл JSON учетной записи службы? Он должен иметь свойства JSON 'type',' project_id', 'private_key_id',' private_key', 'client_email',' client_id', 'auth_uri',' token_uri', 'auth_provider_x509_cert_url 'и' client_x509_cert_url') –

+0

@JonSkeet Его действительный JSON, но idk, как использовать их заглушки, поскольку я не могу найти примеры или документацию. –

+0

Посмотрите на https://github.com/GoogleCloudPlatform/java-docs-samples/tree/ master/speech/grpc - надеюсь, это вам поможет. –

ответ

0

Эй вместо того, чтобы делать это,

GreeterGrpc.GreeterStub окурка = GreeterGrpc.newStub (канал); stub = stub.withCallCredentials (MoreCallCredentials.from (creds));

пожалуйста, следующее:

GreeterGrpc.GreeterStub заглушек = GreeterGrpc.newStub (канал) .withCallCredentials (MoreCallCredentials.from (кредитки));

Как ваш код повторно инициализирует объект-заглушку, вы получаете PERMISSION_DENIED.

Надеюсь, это поможет.