android - 使用 JSON API 将文件上传到 Google Cloud Storage,错误 401 Unauthorized

标签 android google-cloud-storage google-cloud-platform

我正在尝试弄清楚如何使用 JSON API在Android中上传图片到Google Cloud Storage但是这样做的文档似乎非常有限。

我认为我遇到的问题是获取正确的 API key 身份验证。上传的图像被认为是公开的,但只对我的应用程序的用户公开,所以阅读 Authorize Requests文档说我不需要为公共(public)数据提供 OAuth key ,我可以只发送一个 API key

Public API access: A request that does not provide an OAuth 2.0 token must send an API key. The key identifies your project and provides API access, quota, and reports.

所以我去我的控制台创建了一个 key (API Manager/Credentials/Create Credentials/API Key)来 self 的 SHA1我的调试和生产 keystore 。

这些 API key 是正确的,因为它们与其他谷歌服务一起使用,例如 google sign-in他们工作正常。

当我尝试发出开始可恢复上传的请求时,这就是我所做的

String sUrl = "https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=resumable&name="+mImgName;
URL url = new URL(sUrl);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setRequestProperty("Authorization","AIzaSyDT....");
urlConnection.setRequestProperty("X-Upload-Content-Type","image/png");
urlConnection.setRequestProperty("X-Upload-Content-Length",String.valueOf(fileSize));
urlConnection.setRequestMethod("POST");

但是我回来了Error 401 Unauthorized所以我假设这是我发送的 key 的问题。

我还在 Authorize Requests 的末尾看到了文件说我可以把我的 key 作为请求 url 的参数

After you have an API key, your application can append the query parameter key=yourAPIKey to all request URLs.

所以我不知道我是否应该这样做或拥有 Authorization请求中设置的属性还是两者?

那么我创建的 key 类型是错误的还是我在这里遗漏了什么?

最佳答案

您可以使用 API key 下载公共(public)对象。

但是除非您的存储桶启用了公共(public)写入(您通常不想这样做),否则您仍然需要使用身份验证来上传到存储桶。

在你的情况下,我想你可能想使用 Signed URLs .

关于android - 使用 JSON API 将文件上传到 Google Cloud Storage,错误 401 Unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35568313/

相关文章:

java - 图像预览 - Android

android - 相当于 iOS RestKit for Android

java - 如何使用 Java 检查 Google Cloud Storage 中是否存在文件夹?

machine-learning - 使用 'gsutil' 从 Cloud Storage 存储桶上传到 Google Colab 时出错

java - 从一个屏幕( Activity )导航到另一个 Activity 时,我们如何获取和设置相同的 Toggle 值?

Android - SetOnItemClickListener 不起作用

google-cloud-storage - 使用 CloudFlare 对 Google 云存储桶进行 CDN

google-cloud-storage - 如何上传文件到云存储?

python - 如何使用 python 将流管道发布订阅到数据存储?

python - Google Cloud Functions - 我可以将来自不同 GCP 项目存储库的代码部署到 Cloud Functions 中吗?