grpc Ошибка входа в Google

Я пытаюсь создать приложение, используя облачный речевой API Google.
Я клонировал все репозитории и создал действительно простое клиентское приложение на C ++.

#include <grpc++/grpc++.h>
#include "google/cloud/speech/v1/cloud_speech.grpc.pb.h"namespace gs=google::cloud::speech::v1;
using gs::Speech;
using gs::RecognizeResponse;
using gs::RecognizeRequest;
using grpc::Channel;
using grpc::ClientContext;
using grpc::Status;

int main(int argc, char** argv) {
try{
auto channel_creds = grpc::GoogleDefaultCredentials();
auto channel = grpc::CreateChannel("speech.googleapis.com:443", channel_creds);
auto stub = Speech::NewStub(channel);

RecognizeResponse res;
RecognizeRequest req;
ClientContext ctx;

auto status = stub->Recognize(&ctx, req, &res);
if(status.ok())
{
std::cout << "ok" << std::endl;
} else {
std::cout << status.error_code() << ": " << status.error_message() << std::endl;
}
}catch(const std::exception& e)
{
std::cout<<e.what()<<std::endl;
}
std::cin.get();
}

Это компилируется нормально, но при выполнении выдает следующее сообщение об ошибке:

16: у запроса были неверные учетные данные аутентификации. Ожидаемый токен доступа OAuth 2, файл cookie для входа или другие действительные учетные данные для аутентификации. Увидеть https://developers.google.com/identity/sign-in/web/devconsole-project.

Я создал учетную запись службы и поместил ее файл ключа json рядом с переменной env «GOOGLE_APPLICATION_CREDENTIALS» в правильный файл, и я совершенно уверен, что он читается (потому что, если я его удаляю, он просто падает).
Я также включил речевой API онлайн.
У меня нет идей, потому что, что бы я ни делал, я не могу заставить его работать.
Я что-то пропустил ?

0

Решение

После еще нескольких попыток и прочтения примера кода, я, наконец, сам нашел причину.
Я должен был использовать другой URL. Изменение «speech.googleapis.com:443» на «speech.googleapis.com» приводит к другой ошибке, но соединение и вход в систему работают.

Правильная настройка всех параметров для этой функции и предоставление реальных аудиоданных возвращает полезные результаты. Я не ожидал, что порт будет иметь значение, учитывая, что оба URL есть во многих примерах программ, а grpc использует http2 (который, в свою очередь, использует порт 443).

Важная часть: убедитесь, что вы не включили порт для использования с сервисами Google.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]