Ответ 1
ЭТО НЕ ПОЛНЫЙ ОТВЕТ НА ВОПРОС
Основываясь на опции импорта инструментов firebase, я создал обрезанную структуру, используя которую я могу вызвать импорт из облачная функция. Единственный сбой, с которым я столкнулся, - это место, где я должен передать токен доступа для выполнения действия.
На данный момент я коротко замыкал метод getAccessToken
внутри import/api.js
. Это то место, где мне нужна помощь от команды Firebase, чтобы получить токен доступа прямо для администратора firebase или обойти проверку, когда запрос сделан из облачной функции!
getAccessToken: function() {
return Promise.resolve({access_token: accessToken});
// return accessToken ? RSVP.resolve({access_token: accessToken}) : require('./auth').getAccessToken(refreshToken, commandScopes);
},
В приведенной выше функции прокомментированный код фактически получает выполняемый accessToken
пользователь, выполняя firebase import
из инструментов CLI. Как утилита командной строки, запрашивающая пользователя для получения разрешения, но при запуске внутри облачной функции это должен быть один из следующих вариантов, которые я мог бы придумать!
a), поскольку облачные функции выполняются внутри админ-предисловий, игнорируйте разрешения! b) или предоставить средства для получения токена доступа прямо из SDK администратора.
Суть присутствует здесь в github. Я взял большинство из них, как из проект инструментов firebase, и немного изменил его, чтобы он мог работать внутри cloudFunctions. Я старался как можно скорее принести минимальный код из инструментов firebase.
Когда я запускаю это, ошибки, которые я получаю, находятся по строке 35 lib/import/api.js
:
<<< HTTP RESPONSE BODY
{
"error":{
"errors":[
{
"domain":"global",
"reason":"authError",
"message":"Invalid Credentials",
"locationType":"header",
"location":"Authorization"
}
],
"code":401,
"message":"Invalid Credentials"
}
}