Получение «Запрос имел неверные учетные данные для аутентификации» при использовании файла ключа json учетной записи службы в приложении Go

Я разрабатываю приложение Go в проекте GCP и использую службу облачного ведения журналов Google. У меня проблемы с запуском приложения, так как оно говорит, что у меня неверные учетные данные для аутентификации, когда я использую ключ 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

Я не знаю, почему он говорит, что срок действия токена истек, хотя это единственный ключ json служебной учетной записи, который у меня есть на GCP и на моем локальном компьютере.

🤔 А знаете ли вы, что...
Go (или Golang) - это язык программирования, разработанный в Google.


1
51
1

Ответ:

Решено

Можете ли вы запустить gcloud auth application-logon по умолчанию и убедиться, что вы установили правильный проект.

Проверьте, установлен ли GOOGLEAPPLICATIONSCREDENTALS с допустимым ключом JSON и правильно ли установлена ​​переменная среды, для проверки выполните приведенную ниже команду.

echo $GOOGLE_APPLICATION_CREDENTIALS

Если команда не возвращает правильный путь к ключу JSON, вы можете установить переменную среды с помощью этой команды:

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

После того, как вы убедились, что ключ JSON действителен, а переменная среды установлена ​​правильно, вы сможете запустить свое приложение. В качестве альтернативы вы можете попытаться удалить файл .env, а затем воссоздать его с ключом json сервисной учетной записи . , который должен повторно сгенерировать токен и сделать его действительным.

Прикрепляю документацию по устранению неполадок для справки.