Maison  >  Article  >  développement back-end  >  Obtenir "La demande avait des informations d'authentification non valides" lors de l'utilisation du fichier de clé JSON du compte de service dans l'application Go

Obtenir "La demande avait des informations d'authentification non valides" lors de l'utilisation du fichier de clé JSON du compte de service dans l'application Go

WBOY
WBOYavant
2024-02-09 12:18:201144parcourir

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

php Editor Banana Lorsque vous utilisez un fichier de clé JSON de compte de service dans une application Go, vous pouvez rencontrer le problème « La demande comporte des informations d'authentification non valides ». Ce problème est généralement dû à un format ou à un contenu incorrect du fichier de clé. Pour résoudre ce problème, vérifiez que le fichier de clé est au format correct et qu'il contient les informations d'authentification correctes. Essayez également de régénérer le fichier de clé et assurez-vous qu'il est correctement configuré dans l'application. Grâce à ces méthodes, vous pouvez résoudre le problème « la demande contient des informations d'authentification non valides » et utiliser normalement le fichier de clé JSON du compte de service.

Contenu de la question

Je développe une application go sur le projet gcp et j'utilise le service de journalisation cloud de Google. J'ai du mal à exécuter l'application, car elle indique que mes informations d'authentification ne sont pas valides lorsque j'utilise la clé JSON du compte de service.

Voici l'extrait de code avec l'erreur :

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)
    }

Voici la définition de la fonction load() :

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
}

J'ai un .env fichier avec le contenu suivant : google_application_credentials=json/path-to-json.json

Je ne sais pas pourquoi il est indiqué que le jeton a expiré même s'il s'agit de la seule clé JSON de compte de service que j'ai sur gcp et sur ma machine locale.

Solution de contournement

Vous pouvez exécuter gcloud auth application-default login a> et vous assurer que vous l'avez défini sur le bon projet.

Vérifiez googleapplicationscredentals si une clé json valide est définie et si les variables d'environnement sont définies correctement, veuillez exécuter la commande suivante pour vérifier

echo $google_application_credentials

Si la commande ne renvoie pas le chemin correct vers la clé json, vous pouvez définir la variable d'environnement à l'aide de la commande suivante :

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

Après avoir vérifié que la clé json est valide et que les variables d'environnement sont correctement définies, vous devriez pouvoir exécuter votre application. Alternativement, vous pouvez essayer de supprimer le fichier .env, puis d'utiliser la clé json du compte de service et cela devrait régénérer le jeton et le rendre valide.

Dépannage supplémentairedocument a>pour référence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer