Аутентификация Firebase работает, но я получаю ошибку при использовании Google Text to Speech API - PullRequest
0 голосов
/ 18 сентября 2018

Я установил небольшое приложение для Android и Firebase ... Аутентификация работает как чудо, и в консоли Firebase я вижу своего пользователя, вошедшего в систему с учетной записью Google.

Теперь яя пытаюсь немного поэкспериментировать с API-интерфейсом Text to Speech, и при этом я следовал этому уроку:

https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/texttospeech/cloud-client

Мне удалось заставить небольшое приложение Java работать, установивпеременная среды GOOGLE_APPLICATION_CREDENTIALS (я следовал этому руководству для этого шага: https://cloud.google.com/docs/authentication/getting-started),, но я не уверен, что мне нужно сделать, чтобы этот код работал в приложении Android, где пользователи проходят аутентификацию ..

Ошибка, которую я получаю при попытке вызвать API-интерфейс TextToSpeech:

Учетные данные приложения по умолчанию недоступны. Они доступны при запуске в Google Compute Engine. В противном случае переменная средыНеобходимо указать GOOGLE_APPLICATION_CREDENTIALS, указывающий на файл, определяющий учетные данные. Для получения дополнительной информации см. https://developers.google.com/accounts/docs/application-default-credentials.

Указанная ошибка происходит из строки:

TextToSpeechClient textToSpeechClient = TextToSpeechClient.create();

Эта ошибка возникает из-за того, что на эмуляторе Android у меня нет доступа к учетным данным, которые установлены в качестве переменной средыв моей ОС ... Так что я должен предоставить учетные данные другим способом.

В случае других API Google, таких как Storage, я обнаружил, что это можно сделать следующим образом:

// You can specify a credential file by providing a path to GoogleCredentials.
// Otherwise credentials are read from the GOOGLE_APPLICATION_CREDENTIALS environment variable.
GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(jsonPath))
 .createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"));
Storage storage = StorageOptions.newBuilder().setCredentials(credentials).build().getService();

Мне удалось создать объект GoogleCredentials с содержимым файла json, однако клиент TextToSpeech, похоже, не предоставляет такую ​​функциональность:

StorageOptions.newBuilder().setCredentials(credentials).build()

Так что мой вопрос ....Есть ли способ предоставить объект Credentials клиенту TextToSpeech?

Спасибо

1 Ответ

0 голосов
/ 26 сентября 2018

В настоящее время нет способа предоставить учетные данные для клиента TTS с этой страницы .

По соображениям безопасности / аутентификации, я полагаю, что лучший предлагаемый подход - это использовать Функции Firebase .

  1. Получение текста
  2. Вызов функций Firebase
  3. Есть функции Firebase, вызывающие API TTS
  4. Возвратрезультаты.

Таким образом, в приложении нет утечек ключей, и вы можете использовать Firebase Auth.

Дайте мне знать, если это поможет!

Обновление:

Вариант 2: Руководство для iOS (должно быть адаптировано для Android)

  1. Получение текста
  2. Вызов функций Firebase
  3. Наличие функций Firebase, возвращающих токен OAuth2
  4. Использование токена напрямую с API
...