Google api 将范围限制为Google服务帐户的Google Auth JWT客户端中的单个文件

Google api 将范围限制为Google服务帐户的Google Auth JWT客户端中的单个文件,google-api,google-cloud-functions,google-authentication,service-accounts,google-api-nodejs-client,Google Api,Google Cloud Functions,Google Authentication,Service Accounts,Google Api Nodejs Client,我正在使用一个服务帐户生成一个访问令牌,以访问我的谷歌硬盘中的某些工作表。该访问令牌将发送给客户端用户,用户将使用该令牌访问我的工作表。但是不同的用户可以访问不同的工作表,我希望他们阻止使用相同访问令牌访问其他工作表。目前,该服务帐户可以访问我的应用程序使用的所有文件 为了生成访问令牌,我使用了googleapis的google.auth.JWT模块。我使用Firebase云函数作为节点版本10的后端 这是我的密码 try { const jwtClien

我正在使用一个服务帐户生成一个访问令牌,以访问我的谷歌硬盘中的某些工作表。该访问令牌将发送给客户端用户,用户将使用该令牌访问我的工作表。但是不同的用户可以访问不同的工作表,我希望他们阻止使用相同访问令牌访问其他工作表。目前,该服务帐户可以访问我的应用程序使用的所有文件

为了生成访问令牌,我使用了
googleapis
google.auth.JWT
模块。我使用Firebase云函数作为节点版本10的后端

这是我的密码

        try {
            const jwtClient = new google.auth.JWT(
                key.client_email,
                null,
                key.private_key,
                ['https://www.googleapis.com/auth/drive',],     // drive scope
            );

            const accessToken = await jwtClient.authorize();

        } catch (error) {
            console.log(error)
            res.status(500).json(error)
        }

提前感谢

如果服务帐户的权限允许令牌完全访问文件夹中的每个文件,则这些令牌也允许读取其他文档。我认为您可以通过更改文件本身的权限,而不是提供通用访问令牌来解决向一组文档授予特定用户权限的问题。的此页面介绍了如何在文件级别更改权限,并提供了一些Node.js示例。

检查drive.file范围,认为它将仅限于应用程序本身创建的文件。当前答案是正确的。您的模式是反模式:您将服务帐户的标识令牌发送到外部,任何人都可以代表服务帐户访问文档。您不知道谁访问文档,谁更改文档,。。。只有一条建议:不要那样做!是的,我试过你的方法。但它需要用户拥有一个谷歌账户,对吗?我试图在用户没有通过谷歌账户登录的情况下完成这项工作,这还要求我们通过谷歌应用程序验证过程,但他们从未回复过。谢谢你的回答。顺便说一句@MaheeGamage是的,他们需要谷歌账户,看到这个了吗