Я могу успешно сгенерировать подпись для моих созданных миниатюр, но примерно через неделю они перестают работать ...
Я не получаю никаких ошибок или информации о том, почему онисрок действия истекает, просто они.
Я использовал Firebase для разработки своего приложения, и теперь мне вдруг приходится иметь дело со всем этим разрешением облачного хранилища Google, а что нет - на самом деле понятия не имею, что происходит... Это должно быть какой-то вопрос разрешения?
Я пытался создать новую учетную запись службы из консоли Firebase, но не повезло ... Я устал ждать недели, чтобы увидеть, истекает ли срок их действия снова или нет.Я надеюсь, что кто-то может привести меня к решению этой проблемы - похоже, это проблема для многих людей ... Мы не можем позволить себе жить и иметь серые эскизы по всему приложению, потому что срок их действия истекает.
Воткак мы генерируем SignUrl с облачными функциями Firebase:
export const generateThumbs = functions.storage
.object()
.onFinalize(async object => {
const fileBucket = object.bucket; // The Storage bucket that contains the file.
const filePath = object.name; // File path in the bucket.
const fileName = filePath.split('/').pop();
const userUid = filePath.split('/')[2];
const sizes = [150, 256];
const bucketDir = dirname(filePath);
if (!filePath.startsWith('categories/')) {
console.log('This is not in the categories directory.');
return false;
}
if (fileName.includes('thumb@') || !object.contentType.includes('image')) {
console.log('exiting function');
return false;
}
const bucket = gcs.bucket(fileBucket);
const tempFilePath = path.join(tmpdir(), fileName);
return bucket.file(filePath).download({
destination: tempFilePath
}).then(() => {
sizes.map(size => {
const newFileName = `thumb@${size}_${fileName}`
const newFileTemp = path.join(tmpdir(), newFileName);
const newFilePath = `thumbs/${newFileName}`
return sharp(tempFilePath)
.resize(size, size)
.toFile(newFileTemp, () => {
return bucket.upload(newFileTemp, {
destination: join(bucketDir, newFilePath),
metadata: {
contentType: 'image/jpeg'
}
}).then((data) => {
const file = data[0]
file.getSignedUrl({
action: 'read',
expires: '03-17-2100'
}, function(err, url) {
if (err) {
console.error(err);
return;
}
if (size === 150) {
return admin.database().ref('profileThumbs').child(userUid).child(fileName).set({ thumb: url });
} else if (size === 256) {
return admin.database().ref('categories').child(fileName).child('thumb').set(url)
.then(() => {
admin.database().ref('categories').child(fileName).child('tempThumb').remove();
})
}
})
})
})
})
}).catch(error =>{
console.log(error);
});
})
После установки даты истечения срока действия на 03-17-2100, мы не ожидаем такого поведения, но, как я уже сказал, я чувствую, что егочто-то делать с разрешениями gcs - я пытался связаться с ними, но примерно через неделю я все еще жду их ответа.
Я ценю все отзывы!