第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Google App Engine Go 1.11 應(yīng)用程序無(wú)法訪(fǎng)問(wèn) Google 電子表格

Google App Engine Go 1.11 應(yīng)用程序無(wú)法訪(fǎng)問(wèn) Google 電子表格

Go
吃雞游戲 2023-05-15 15:10:48
我正在嘗試從在Google App Engine Go 1.11 Standard Environment上運(yùn)行的應(yīng)用程序通過(guò) API 訪(fǎng)問(wèn) google 電子表格。不幸的是,應(yīng)用程序無(wú)法讀取此電子表格。我在Spreadsheets.Values.Get通話(huà)中遇到下一個(gè)錯(cuò)誤:googleapi: Error 403: Request had insufficient authentication scopes., forbidden示例代碼// Sample app showing issue with GAE -> google spreadsheetspackage mainimport (    "context"    "fmt"    "log"    "net/http"    "os"    "cloud.google.com/go/compute/metadata"    "golang.org/x/oauth2/google"    "google.golang.org/api/sheets/v4")func main() {    http.HandleFunc("/", indexHandler)    // [START setting_port]    port := os.Getenv("PORT")    if port == "" {        port = "8080"        log.Printf("Defaulting to port %s\n", port)    }    // let's check app engine instance scopes    scopes, _ := metadata.Get("instance/service-accounts/default/scopes")    log.Printf("[DEBUG] metadata scopes: %s.\n", scopes)    log.Printf("Listening on port %s", port)    log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))    // [END setting_port]}// indexHandler responds to requests with our greeting.func indexHandler(w http.ResponseWriter, r *http.Request) {    ctx := context.Background()    client, _ := google.DefaultClient(ctx, "https://www.googleapis.com/auth/spreadsheets.readonly")    srv, err := sheets.New(client)    // Prints the names and majors of students in a sample spreadsheet:    // https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit    spreadsheetId := "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"    readRange := "Class Data!A2:E"    resp, err := srv.Spreadsheets.Values.Get(spreadsheetId, readRange).Do()    if err != nil {        log.Fatalf("Unable to retrieve data from sheet: %v\n", err)    }重現(xiàn)步驟:1) 部署應(yīng)用程序:gcloud app deploy2) 在瀏覽器中打開(kāi)(您將獲得 502):gcloud app browse3) 檢查日志:gcloud app logs read
查看完整描述

1 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

我之前也遇到過(guò)這個(gè)問(wèn)題以及 App Engine 到 G Suite 的集成。您需要使用服務(wù)帳戶(hù)密鑰。默認(rèn)的是不夠的(我相信是因?yàn)樗鼪](méi)有私鑰,但這可能是錯(cuò)誤的)。


本質(zhì)上,您需要使用您的代碼上傳一個(gè)密鑰并使用它來(lái)獲取Client(而不是使用默認(rèn)密鑰):


func getOauthClient(serviceAccountKeyPath string) *http.Client {

    ctx := context.Background()

    data, err := ioutil.ReadFile(serviceAccountKeyPath)

    if err != nil {

        log.Fatal(err)

    }

    creds, err := google.CredentialsFromJSON(ctx, data, "https://www.googleapis.com/auth/spreadsheets.readonly")

    if err != nil {

        log.Fatal(err)

    }


    return oauth2.NewClient(ctx, creds.TokenSource)

}


查看完整回答
反對(duì) 回復(fù) 2023-05-15
  • 1 回答
  • 0 關(guān)注
  • 160 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)