gpt4 book ai didi

go - 如何验证来自appEngine灵活的可恢复上传,类似于golang中的SignedURL

转载 作者:数据小太阳 更新时间:2023-10-29 03:11:47 26 4
gpt4 key购买 nike

我得到这个代码来获得一个 signedURL:

import (
"net/http"
"time"
"cloud.google.com/go/storage"
"google.golang.org/appengine"
)

//Don´t worry about the errors, I´m handling them
func CreatSignedURL(r *http.Request) (string, error) {
ctx := appengine.NewContext(r)
acc, _ := appengine.ServiceAccount(ctx)
filename := "fileName"
bucket := "bucketName"
expires := time.Now().Add(time.Hour * 2)
url, _ := storage.SignedURL(bucket, filename, &storage.SignedURLOptions{
GoogleAccessID: acc,
SignBytes: func(b []byte) ([]byte, error) {
_, signedBytes, err2 := appengine.SignBytes(ctx, b)
return signedBytes, err2
},
Method: "PUT",
Expires: expires,
})
return url, nil
}

但是,我想通过可恢复上传来验证类似于上面的代码

import (
"fmt"
"net/http"
)

func ResumeUploadURL(nameBucket, nombreObjeto string) string {
url := "https://www.googleapis.com/upload/storage/v1/b/" + nameBucket + "/o?uploadType=resumable&name=" + nombreObjeto
client := &http.Client{}
r, _ := http.NewRequest("POST", url, nil) // URL-encoded payload
r.Header.Add("Authorization", "auth_token=??????????") // What should I use instead?
r.Header.Add("Content-Length", "0")

resp, _ := client.Do(r)
.....
}

但我需要 auth_token,我需要像此处描述的那样获取 auth_token https://cloud.google.com/storage/docs/json_api/v1/how-tos/authorizing但是我想避免这种情况,因为如果我可以轻松地使用 signedURL 进行身份验证并且不能通过简历上传进行身份验证,那么以这种方式进行身份验证对我来说似乎很愚蠢

最佳答案

好吧,我想避免使用 auth2,因为没有很好的文档,在阅读了很多文档并尝试了许多失败的示例之后,我终于开始工作了,这些是制作 token Bearer 的步骤用json api续传

  1. 从 console.cloud.google.com/apis/credentials 下载 JSON 凭证

    1.1)选择“创建凭据”1.2)选择“服务账户 key ”1.3) 选择您的账户1.4)选择JSON->创建1.4)它将下载一个包含你需要的信息的JSON

  2. 创建一个 oauth2/jwt tokenSource

    进口( “语境” “网络/http” “golang.org/x/oauth2/jwt”) var config = &jwt.Config{ 电子邮件:“someEmail@something.com”, PrivateKey: []byte("-----BEGIN PRIVATE KEY-----\nbablablablablablabalabal\nbablablablablablabalabalas=\n-----END PRIVATE KEY-----\n"), PrivateKeyID: "somethingVeryPrivate", Scopes: []string{"https://www.googleapis.com/auth/devstorage.read_write "},//你可以根据需要更改/添加范围 https://cloud.google.com/storage/docs/json_api/v1/how-tos/authorizing TokenURL: "https://accounts.google.com/o/oauth2/token ", } token, err := config.TokenSource(context.Background()).Token()//处理错误

3)现在你有了要使用的id,它在方法token.AccessToken中

获取url的所有过程,我把它放在这里:https://github.com/johnbalvin/google-cloud-go/blob/master/storage/resumableUpload.go

关于go - 如何验证来自appEngine灵活的可恢复上传,类似于golang中的SignedURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49727761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com