我正在开发一个GCP项目的Go应用程序,我使用的是谷歌云日志服务。我在运行应用程序时遇到了问题,因为它说我使用服务帐户json密钥时身份验证凭据无效。
下面是出现错误的代码片段:
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)
}
下面是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
}
我有一个包含以下内容的.env
文件:GOOGLE_APPLICATION_CREDENTIALS=json/path-to-json.json
我不知道为什么它说令牌过期,即使这是我在GCP和我的本地机器上拥有的唯一服务帐户json密钥。
1条答案
按热度按时间zbwhf8kr1#
您能否运行
gcloud auth application-default login
并确保将其设置为正确的项目。检查
GOOGLEAPPLICATIONSCREDENTALS
是否设置了有效的JSON密钥,环境变量是否设置正确,要进行检查,请运行以下命令如果命令没有返回JSON键的正确路径,可以使用以下命令设置环境变量:
验证JSON密钥有效且环境变量设置正确后,您应该能够运行应用程序,或者,您可以尝试删除.env文件,然后使用service account json key重新创建它,service account json key将重新生成令牌并使其有效。
随附故障排除文档以供参考。