Heim  >  Artikel  >  Backend-Entwicklung  >  Bei Verwendung der JSON-Schlüsseldatei des Dienstkontos in der Go-Anwendung wird die Meldung „Die Anfrage weist ungültige Authentifizierungsdaten“ angezeigt

Bei Verwendung der JSON-Schlüsseldatei des Dienstkontos in der Go-Anwendung wird die Meldung „Die Anfrage weist ungültige Authentifizierungsdaten“ angezeigt

WBOY
WBOYnach vorne
2024-02-09 12:18:201145Durchsuche

在 Go 应用程序中使用服务帐户 json 密钥文件时获取“请求具有无效的身份验证凭据”

php Editor Banana Wenn Sie eine JSON-Schlüsseldatei eines Dienstkontos in einer Go-Anwendung verwenden, kann das Problem „Anfrage hat ungültige Authentifizierungsdaten“ auftreten. Dieses Problem wird normalerweise durch ein falsches Format oder einen falschen Inhalt der Schlüsseldatei verursacht. Um dieses Problem zu beheben, überprüfen Sie, ob die Schlüsseldatei das richtige Format hat und die richtigen Authentifizierungsinformationen enthält. Versuchen Sie außerdem, die Schlüsseldatei neu zu generieren und sicherzustellen, dass sie ordnungsgemäß in der Anwendung konfiguriert ist. Mit diesen Methoden können Sie das Problem „Anfrage hat ungültige Authentifizierungsdaten“ lösen und die JSON-Schlüsseldatei des Dienstkontos normal verwenden.

Frageninhalt

Ich entwickle eine Go-Anwendung für ein GCP-Projekt und verwende den Google Cloud-Protokollierungsdienst. Ich habe Probleme beim Ausführen der App, da mir angezeigt wird, dass meine Authentifizierungsdaten ungültig sind, wenn ich den JSON-Schlüssel des Dienstkontos verwende.

Dies ist der Codeausschnitt mit dem Fehler:

c, cerr := load(".env")
    if cerr != nil {
        log.fatalf("could not load config: %s", cerr)
        return
    }

    // initializes logger which writes to stdout
    ctx := context.background()
    opt := option.withcredentialsfile(c.googleapplicationcredentials);
    loggerclient, clienterr := logging.newclient(ctx, "poc-projects-01", opt)
    if clienterr != nil {
        log.fatal(clienterr)
    }

Dies ist die Definition der load()-Funktion:

func Load(file string) (*Config, error) {
    viper.SetConfigFile(file)
    viper.AddConfigPath(".")
    viper.AutomaticEnv()
    if err := viper.ReadInConfig(); err != nil {
        return nil, err
    }
    
    c := &Config{
        GoogleApplicationCredentials: viper.GetString("GOOGLE_APPLICATION_CREDENTIALS"),
    }

    return c, nil
}

Ich habe eine .env Datei mit folgendem Inhalt: google_application_credentials=json/path-to-json.json

Ich weiß nicht, warum es heißt, dass das Token abgelaufen ist, obwohl dies der einzige JSON-Schlüssel für das Dienstkonto ist, den ich auf gcp und meinem lokalen Computer habe.

Problemumgehung

Sie können gcloud auth application-default login a> ausführen und sicherstellen, dass das richtige Projekt eingestellt ist.

Überprüfen googleapplicationscredentals, ob ein gültiger JSON-Schlüssel festgelegt ist und ob die Umgebungsvariablen korrekt festgelegt sind. Führen Sie bitte den folgenden Befehl aus, um zu überprüfen

echo $google_application_credentials

Wenn der Befehl nicht den richtigen Pfad zum JSON-Schlüssel zurückgibt, können Sie die Umgebungsvariable mit dem folgenden Befehl festlegen:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/json/key.json

Nachdem Sie überprüft haben, ob der JSON-Schlüssel gültig ist und die Umgebungsvariablen richtig eingestellt sind, sollten Sie Ihre Anwendung ausführen können. Alternativ können Sie versuchen, die .env-Datei zu löschen und dann den Dienstkonto-JSON-Schlüssel zu verwenden. Dadurch sollte das Token neu generiert und gültig gemacht werden.

Zusätzliches Fehlerbehebungsdokumentals Referenz. a>

Das obige ist der detaillierte Inhalt vonBei Verwendung der JSON-Schlüsseldatei des Dienstkontos in der Go-Anwendung wird die Meldung „Die Anfrage weist ungültige Authentifizierungsdaten“ angezeigt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen