Я хотел бы получить доступ к изображениям без маркера доступа в URL-адресе хранилища Cloud Storage. В настоящее время метод getSignedUrl объекта возвращает URL-адрес примерно так:
getSignedUrl
https://firebasestorage.googleapis.com/v0/b/video-b2b9d.appspot.com/o/backgrounds_library%2F0-large.png?alt=media&token=cdf20e1a-2d0b-494e-aef7-3e47b479b1d0
Мне нужно использовать URL-адрес изображения с html canvas drawImage, и кажется, что URL с токеном доступа не будет работать в этом контексте. Я хотел бы получить доступ к изображениям с помощью прямого URL-адреса, например:
drawImage
https://firebasestorage.googleapis.com/v0/b/video-b2b9d.appspot.com/o/backgrounds_library%2F0-large.png
Облачная функция:
export const onUpload = functions.storage.object().onFinalize(async object => { try { const bucket = admin.storage().bucket() const db = admin.firestore(); const filePath = object.name; const file = bucket.file(object.name); const dir = path.dirname(filePath); const allowedDirs = [ 'backgrounds_library', 'music_library', 'images_library', 'icons_library' ] if(allowedDirs.includes(dir)) { const [ url ] = await file.getSignedUrl({ 'expires' : '03-09-2150', 'action' : 'read' }) await db.collection(dir).add({ url, id: object.id, }) } else { return false; } } catch (error) { console.log(error) } })