Я загружаю изображения в хранилище Firebase и хотел бы сохранить их изображения в качестве photoURL в аутентификации Firebase. Однако, когда я иду, чтобы загрузить URL изображения после использования получить подписанный URL, я получаю ошибку
Ошибка: поле photoURL должно быть действительным URL.
Я знаю, что URL действителен, поскольку я проверил его с консоли. Я попытался использовать decodeURI и даже зашел так далеко, что заглянул в исходный код для firebase-admin-node
отслеживания вплоть до файла с именем auth-api-запросы.ts который в строке 252 проверяет URL-адрес в функции с именем validator.isURL(request.photoUrl)
, что привело меня к файлу, в котором определена функция validator.ts , который определяет .isURL()
в строке 152 в этой функции. Строка запрещенных символов. Я не хочу вмешиваться в исходный код Firebase, но я не могу найти никакого решения. Должно быть более простое решение для возврата из одной функции Google .getSignedURL()
, которая будет использоваться в качестве параметра в другой .updateUser({photoURL:
}), особенно если учесть, что больше нельзя вызывать firebase.getDownloadURL()
из узла облачных функций Google. Спасибо за любую помощь, которую вы оказываете в решении этой проблемы.
var downloadURL = "";
await admin.storage().bucket("gs://****firebase.appspot.com").file(storageRef).getSignedUrl({"action":"read","expires":Date.now() + 500*365*24*3600000}).then((value) => {
console.log("value after requesting signed URL: " + JSON.stringify(value));
downloadURL = value;
return value;
}).catch((error) => {
console.log("error perfoming signed URL: " + error);
return error;
})
const url = decodeURI(downloadURL)
console.log("\nThe decodeURI url: " + url + "\n");
await admin.auth().updateUser(userID,{photoURL:url}).then((user) => {
console.log("User update ran a success: " + JSON.stringify(user));
return true;
}).catch((error) => {
console.log("An error occured in getting the user: " + error);
return error;
});