所以我从 Nuget (Google.Apis.Storage.v1, version=1.8.1.10) 下载了 Cloud Storage 的 .NET 客户端,使用开发者控制台创建了一个项目,生成了 API key ,启用了计费,创建了一个存储桶。
但是当我试图列出存储桶中的所有对象时,我收到了这个错误(需要登录)。任何想法为什么会这样? Cloud Storage 及其 JSON API 在控制台中启用。
这是我的示例应用程序的完整代码:https://gist.github.com/chester89/5d6a62633abab3969c32
最佳答案
API key 是一个简单的标记,表示“此调用与此项目相关联”。它对于管理配额很有用,但它不是 secret ,也不会将调用者验证为任何特定用户。匿名调用者可能无法浏览您的存储桶,并且您的调用是匿名进行的。
您可以通过授予匿名用户对您的存储桶的读取权限来解决此问题,但更好的办法是对您的请求进行身份验证。关于如何执行此操作,您有多种选择,具体取决于您是要使用自己的个人凭据进行调用,还是要使用与您的应用程序关联的服务帐户。此处记录了完整的说明:https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth
假设您想以自己的身份进行身份验证,并且您正在编写一个将在您的桌面上运行的应用程序,下面是一个示例:
UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new[] { BooksService.Scope.Books },
"user", CancellationToken.None, new FileDataStore("Books.ListMyLibrary"));
}
// Create the service.
var service = new BooksService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Books API Sample",
});
关于.net - Google.Apis.Requests.RequestError 需要登录 [401] 消息[需要登录] 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23727352/