У меня есть облачная функция, которая переводит текст с помощью API Google Translate. Он использует этот фрагмент кода:
const functions = require('firebase-functions');
function createTranslateUrl(lang, text) {
return `https://www.googleapis.com/language/translate/v2?key=${functions.config().firebase.apiKey}&source=en&target=${lang}&q=${text}`;
}
Проблема в части functions.config().firebase.apiKey. Некоторое время работал нормально, но вдруг начал возвращать undefined.
Вот как сейчас выглядит конфиг:
config { firebase:
{ projectId: 'projectname',
databaseURL: 'https://projectname.firebaseio.com',
storageBucket: 'projectname.appspot.com',
credential: ApplicationDefaultCredential { credential_: MetadataServiceCredential {} } } }
Я жестко запрограммировал apiKey, скопировав его с консоли firebase, и пока он работает нормально.
Мои вопросы: безопасно ли использовать жестко запрограммированный ключ API? И что может привести к тому, что functions.config().firebase.apiKey вернет undefined?
Спасибо, @DougStevenson! Я проверю это. Просто нашел решение выше где-то в примерах Google для облачных функций. Думал, это правильный путь.

Удачи с этим? У меня точно такая же проблема, когда functions.config().firebase.apiKey возвращает undefined.
Это началось после моего вчерашнего развертывания. Я проверил примечания к выпуску firebase, но ничего, связанного с конфигурацией, там не было.
ОБНОВЛЕНИЕ: Оказывается, мы использовали старую версию firebase-functions. При обновлении до последней версии (0.9.1) исправлены проблемы.
firebase.apiKey был сброшен с functions.config()
См. Также эту проблему на github https://github.com/firebase/firebase-functions/issues/196
Почему бы вам не использовать API узла Translate вместо прямого вызова конечной точки HTTP? Это намного проще. cloud.google.com/translate/docs/reference/…