Как получить учетные данные по умолчанию для проекта App Engine в Google Cloud Platform?

Я пытался настроить сервер App Engine на Google Cloud Platform, который общается с Google. Text-To-Speech Обслуживание. Но Google Text-To-Speech Звонок всегда отдает:

"error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }

Я просматривал много постов и статей в Google, и мне не повезло. Поскольку я использую App Engine (я думаю?), Упоминается, что он должен работать неявно, но, очевидно, это не так, и я не знаю, какая часть пошла не так.

Это также говорит о том, что я могу создать учетную запись сервера, а затем загрузить учетные данные JSON, чтобы сопоставить его, на самом деле я сделал это, но никогда не получалось.

Вот мой app.yaml файл:

#[START runtime]
runtime: go
api_version: go1
env: flex
#[END runtime]

мой main.go файл:

package main

import(
    "fmt"
    "log"
    "net/http"
    "bytes"
    "io/ioutil"
)

func main(){
    http.HandleFunc("/", handle)
    http.HandleFunc("/texttospeech", textToSpeechHandler)
    log.Print("Listening on port: 8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

func handle(w http.ResponseWriter, r *http.Request){
    if r.URL.Path != "/"{
        http.NotFound(w,r)
        return
    }
    fmt.Fprint(w, "Hello, World!")

        url := "https://texttospeech.googleapis.com/v1beta1/text:synthesize"
    fmt.Fprint(w, "URL:>", url)

    var jsonStr = []byte(`{
  "audioConfig": {
    "audioEncoding": "LINEAR16",
    "pitch": "0.00",
    "speakingRate": "1.00"
  },
  "input": {
    "text": "Google Cloud Text-to-Speech enables developers to synthesize natural-sounding speech with 32 voices, available in multiple languages and variants. It applies DeepMind’s groundbreaking research in WaveNet and Google’s powerful neural networks to deliver the highest fidelity possible. As an easy-to-use API, you can create lifelike interactions with your users, across many applications and devices."
  },
  "voice": {
    "languageCode": "en-US",
    "name": "en-US-Wavenet-D"
  }
}`)
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Fprint(w, "response Status:", resp.Status)
    fmt.Fprint(w, "response Headers:", resp.Header)
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Fprint(w, "response Body:", string(body))
}

0 ответов

Другие вопросы по тегам