gpt4 book ai didi

swift - Google 云存储 - 匿名用户无权访问项目 XXXXXXXXXX 的 storage.buckets.list

转载 作者:搜寻专家 更新时间:2023-11-01 07:08:16 25 4
gpt4 key购买 nike

我正在使用 swift 对我的谷歌云存储桶进行 API 调用。

import PlaygroundSupport
import Foundation

let url = URL(string: "https://www.googleapis.com/storage/v1/b?project=<project id>")

let task = URLSession.shared.dataTask(with: url!) { data, response, error in
guard error == nil else {
print(error!)
return
}
guard let data = data else {
print("Data is empty")
return
}

let json = try! JSONSerialization.jsonObject(with: data, options: [])
print(json)
}

task.resume()
PlaygroundPage.current.needsIndefiniteExecution = true

不幸的是,这是得到的:

{
error = {
code = 401;
errors = (
{
domain = global;
location = Authorization;
locationType = header;
message = "Anonymous users does not have storage.buckets.list access to project <project id>.";
reason = required;
}
);
message = "Anonymous users does not have storage.buckets.list access to project <project id>.";
};
}

谷歌云文档非常困惑。在这种情况下,我不知道如何指定用户。什么是正确的方法?

最佳答案

列出存储桶要求您的请求被授权为具有 storage.buckets.list 权限的用户或服务帐户。这通常是对项目具有“所有者”、“编辑者”、“查看者”或“storage.admin”角色的帐户。

首先要决定的是您是要授权为用户还是服务帐户。如果此 swift 应用程序要访问属于最终用户的项目,请选择用户授权。如果需要在您的应用程序自己的项目中列出存储桶,请选择服务帐户身份验证。

如果您选择服务帐户,则必须创建一个服务帐户并为其生成凭据(请参阅 here ),然后在您的应用程序中使用它来生成您在 API 调用期间传入 Authorization header 的 JWT(请参阅here ).

如果您选择代表您的最终用户进行身份验证,您的应用程序必须执行“OAuth 2.0 三足流”,您的应用程序将您的用户发送给 Google 并请求 token ,然后 Google 会向用户提供身份验证对话框和选择授予对您的应用程序的访问权限,如果他们同意,则使用刷新 token 将他们重定向回来。然后,您的应用程序可以将刷新 token 与 API 调用一起使用(或者更好的是,使用刷新 token 来获取要发送的短期访问 token )。如何执行此操作取决于应用程序的类型,请参阅 here了解详情。

关于swift - Google 云存储 - 匿名用户无权访问项目 XXXXXXXXXX 的 storage.buckets.list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46752362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com