嘿我试图实现可恢复上传到 Cloud 存储 .
但我得到一个 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)
1 回答
我遇到了类似的困难,不确定你的情况是否与我的相同 . 我的目标是
用户客户端将元数据上传到我的服务器
服务器在DB中进行身份验证和存储
服务器要求Google Cloud 端存储
resumabale upload url
服务器将url返回给客户端
客户端使用url将媒体上传到GCS
我'm getting 401 unauthorized returns too. Maybe I'我没有正确设置 Headers ?或者
storage.SignedURL
没有正确处理可恢复的上传......?我已经能够使用服务帐户PEM文件上传文件
我正考虑下一步拉动和修改
storage.SignedURL
功能 .