我正在尝试弄清楚如何使用 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/