getSignedUrl中的网址将在几周后过期

时间:2019-05-25 11:34:19

标签: node.js google-cloud-functions google-cloud-storage

我有存储触发功能,该功能可以调整大小并将替换的图像替换到存储中,然后更新数据库中的URL

    }).then(() => {
        console.log('Original file deleted', filePath)
        const logo = storageRef.file(JPEGFilePath)
        return logo.getSignedUrl({ action: 'read', expires: date })

        // const logo = storageRef.child(JPEGFilePath)
        // return logo.getDownloadURL()

        // return storageUrl.getDownloadURL(JPEGFilePath)
    }).then((url) => {
        const newRef = db.collection("user").doc(uid)
        return newRef.set({
            profile: { profileImg: url[0] }
        }, {
                merge: true
            })
    })

这是我设置有效日期的方法

const d = new Date()
const date = new Date(d.setFullYear(d.getFullYear() + 200)).toString()

但是图像会在几周后(大约2周左右)过期。有谁知道该如何解决?正如您从注释代码中看到的,我什至玩过getDownloadURL,但这似乎在触发器中不起作用

2 个答案:

答案 0 :(得分:1)

通过以下链接:

https://stackoverflow.com/a/42959262/370321

https://cloud.google.com/nodejs/docs/reference/storage/2.5.x/File#getSignedPolicy

不确定您使用的是@ google / cloud-storage的哪个版本,但是假设它是2.5.x,则看起来您在date字段中传递的任何值都将传递到new Date()中,因此看起来代码应该像在开发工具中尝试的那样工作。我唯一能猜测的是,它不希望您将文件保留200年。

根据源代码:

https://github.com/googleapis/nodejs-storage/blob/master/src/file.ts#L2358

您是否尝试了更短的时间-或以日期格式将其格式化为mm-dd-yyyy?

答案 1 :(得分:0)

好,所以我尝试了一些东西,但是我不知道这是否行得通,所以我会在2周内回来,将我的问题标记为已回答。对于那些有相同问题的人,我将尝试概括一下我所做的事情。

1 /就像在评论中提到的@TasosV一样,从IAM下载服务帐户密钥。这是链接的操作方法

https://cloud.google.com/iam/docs/creating-managing-service-account-keys#getting_a_service_account_key

2 /将下载的JSON文件保存在您的函数目录中

3 /将密钥包括在功能存储器中。但是请注意如何设置文件的路径。这是我对它具有完整功能的问题

https://stackoverflow.com/a/56407592/11486115