Облачное хранилище Google — «Ошибка: не удалось загрузить учетные данные по умолчанию»

#javascript #node.js #google-cloud-platform #google-cloud-storage #google-iam

#javascript #node.js #google-cloud-platform #google-cloud-storage #google-iam

Вопрос:

При разработке моего приложения в Node.js Поэтому я решил сохранить свои данные, используя клиентские библиотеки облачного хранилища Google.

Я столкнулся с ошибкой, упомянутой в названии, при загрузке в хранилище:

Ошибка: не удалось загрузить учетные данные по умолчанию

Я немного покопался и выяснил, как решить проблему:

  1. Переход к учетным данным Google Cloud Console и создание учетной записи службы.

  2. Настройка роли для учетной записи службы, чтобы иметь полные права доступа к объектам в моем проекте и моих корзинах

  3. Создание ключа для учетной записи службы и загрузка связанного .файл json

  4. Установка Cloud SDK и выполнение команд:

    gcloud auth application-default login

    gcloud config set project [MY_PROJECT_ID]

    gcloud auth activate-service-account --key-file=C:/path/to/json/file

  5. В моем коде, проходящем в .файл учетных данных json в моем новом экземпляре клиента:

    const storage = new Storage({keyFileName: "auth.json"})

Эти описанные шаги устранили проблему… в разработке. Когда я развернул свое приложение для производства, возвращается то же сообщение об ошибке

Я попробовал несколько способов решить проблему. Я предположил, что это проблема с моим веб-хостингом: A2. Поговорив с их технической поддержкой, они заверили меня, что мои пути к файлам указаны правильно в их файловой структуре, но в противном случае они не помогли бы мне устранить ошибку учетных данных.

Итак, почему мои учетные данные отлично работают в разработке, но затем внезапно перестают работать в производстве? Это потому, что у меня был localhost в качестве URI обратного вызова вместо имени домена (или чего-то еще)? Нужно ли указывать домен где-нибудь в SDK или в облачной консоли?

Сообщение об ошибке указывает на https://cloud.google.com/docs/authentication/getting-started , но я много раз читал и перечитывал документацию, поэтому, если кто-нибудь может указать мне на конкретное место в документах, в котором говорится, что мне нужно сделать, это было бы оценено, но имейте в виду, что я сделал свою домашнюю работу, и я RTFM, но япо-прежнему не удается решить эту проблему.

Комментарии:

1. Используете ли вы <имя файла>.js для инициализации своего кода? Если это так, вам следует обновить команду до: GOOGLE_APPLICATION_CREDENTIALS=»/home/user/Downloads/my-key.json» узел <имя файла>.js

2. Итак, да, в моей локальной среде разработки я использую команду nodemon app.js , но в моей среде хостинга все, что я делаю, это указываю каталог / имя файла запуска в форме в их пользовательском интерфейсе. Это где мне нужно добавить G_A_CRED? Или вы говорите об обновлении package.json , которое указано в "main": "app.js" этом?

3. Да, первый вариант, который вы упомянули, — это то, что вы должны сделать 🙂