Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform &引用;没有OAuth的服务帐户授权;,我们可以通过这种方法从谷歌云存储中获取文件吗?_Google Cloud Platform_Google Cloud Storage - Fatal编程技术网

Google cloud platform &引用;没有OAuth的服务帐户授权;,我们可以通过这种方法从谷歌云存储中获取文件吗?

Google cloud platform &引用;没有OAuth的服务帐户授权;,我们可以通过这种方法从谷歌云存储中获取文件吗?,google-cloud-platform,google-cloud-storage,Google Cloud Platform,Google Cloud Storage,根据这份文件,它说 如果要调用的API在中发布了服务定义,则可以使用JWT而不是访问令牌进行授权API调用 我在Github存储库上看到了发布,但我似乎无法使用文档中的方法在Google云存储上获取文件。根据文档步骤3中显示的JWT头和有效负载示例,我做了以下调整 将kid从abcdef1234567890更改为我的服务帐户private\u key\u id 将iss和sub更改为我的服务帐户client\u email 将aud更改为https://storage.googleapis.c

根据这份文件,它说

如果要调用的API在中发布了服务定义,则可以使用JWT而不是访问令牌进行授权API调用

我在Github存储库上看到了发布,但我似乎无法使用文档中的方法在Google云存储上获取文件。根据文档步骤3中显示的JWT头和有效负载示例,我做了以下调整

  • kid
    abcdef1234567890
    更改为我的服务帐户
    private\u key\u id
  • iss
    sub
    更改为我的服务帐户
    client\u email
  • aud
    更改为
    https://storage.googleapis.com/
  • iat
    exp
    更改为现在和现在+1小时
我使用签名JWT作为承载令牌,试图从
http://storage.googleapis.com//path/file
但我一直收到这样的回复

<?xml version='1.0' encoding='UTF-8'?><Error><Code>AuthenticationRequired</Code><Message>Authentication required.</Message></Error>
我们真的可以在谷歌云存储中使用这种方法吗?我做错什么了吗


请注意,我可以使用oauth访问令牌访问文件,但我不希望在请求获取文件之前先请求获取访问令牌。

是的,您可以使用这种方法。重要的一点是,服务帐户私钥用于对请求进行签名,以验证您是否具有适当的权限。然而,这种方法在谷歌云中正在消亡。我建议使用OAuth访问令牌而不是签名JWT。向谷歌额外发出的用JWT交换代币的请求很小,每小时只需执行一次。我不确定,但是Google查找公钥以验证您的私钥签名可能会增加开销,从而增加延迟。是的,您可以使用这种方法。重要的一点是,服务帐户私钥用于对请求进行签名,以验证您是否具有适当的权限。然而,这种方法在谷歌云中正在消亡。我建议使用OAuth访问令牌而不是签名JWT。向谷歌额外发出的用JWT交换代币的请求很小,每小时只需执行一次。我不确定,但谷歌查找公钥以验证私钥签名可能会增加开销,从而增加延迟。