【发布时间】:2015-03-30 17:27:02
【问题描述】:
嘿,我正在尝试实现可恢复的上传到云存储。
但我得到一个 Status:"401 Unauthorized", StatusCode:401
我假设它与承载者有关,但我想不出另一种发送承载令牌的方法。
我已经能够使用 GetClinet 方法删除文件。
func GetClinet(c endpoints.Context) *http.Client {
cli := &http.Client{
Transport: &oauth2.Transport{
Source: google.AppEngineTokenSource(c, storage.ScopeReadWrite),
Base: &urlfetch.Transport{Context: c},
},
}
return cli
}
client := GetClinet(con)
url := "https://storage.googleapis.com/bucketName/file.txt"
b := r.Header.Get("Authorization") //parse the bearer from user request
r, err = http.NewRequest("POST", url, nil)
r.Header.Add("Content-Type", "text/plain")
r.Header.Add("Content-Length", "0")
r.Header.Add("x-goog-resumable", "start")
r.Header.Add("Authorization", b)
resp, err := client.Do(r)
【问题讨论】:
-
我不确定“从用户请求中解析承载”是否意味着您正在运行网络服务器并且您想要访问用户的 Google Cloud Storage 帐户。如果是这样,您可能想熟悉一下:developers.google.com/accounts/docs/OAuth2WebServer
-
@rein 仅针对该令牌的学习曲线就很高,在这种情况下文档还不够好,另一方面,代码更有用github.com/johnbalvin/google-cloud-go/blob/master/storage/…
标签: google-app-engine go google-cloud-storage