Требуется идентификатор ключа и секретный ключ apiKey, даже если они находятся в express-stormpath

Я пытаюсь использовать экспресс-шторм в моем приложении Heroku. Я следую за документами здесь, и мой код очень прост:

var express = require('express');
var app = express();
var stormpath = require('express-stormpath');

app.use(stormpath.init(app, {
  website: true
}));

app.on('stormpath.ready', function() {
  app.listen(3000);
});

Я уже посмотрел на этот вопрос и следовал документам для разработчиков Heroku. В документах говорится, что для приложения Heroku нет необходимости передавать параметры, но я все еще пытался передать параметры, и ничего не работает. Например, я пробовал это:

app.use(stormpath.init(app, {
   // client: {
   //   file: './xxx.properties'
   // },
   client: {
     apiKey: {
       file: './xxx.properties',
       id: process.env.STORMPATH_API_KEY_ID || 'xxx',
       secret: process.env.STORMPATH_API_KEY_SECRET || 'xxx'    
     }
   },
   application: {
     href: 'https://api.stormpath.com/v1/applications/blah'
   },
}));

Чтобы попытаться увидеть, что происходит, я добавил строку console.log в valdiator стратегии stormpath-config, чтобы напечатать объект client, и он дает мне следующее:

{ file: './apiKey-xxx.properties',
  id: 'xxx',
  secret: 'xxx' }
{ file: null, id: null, secret: null }

Error: API key ID and secret is required.

Почему он вызывается дважды, а во второй раз - почему у объекта клиента есть нулевые значения для файла, идентификатора и секрета?

Когда я бегу heroku config | grep STORMPATH, Я получил

STORMPATH_API_KEY_ID:     xxxx
STORMPATH_API_KEY_SECRET: xxxx
STORMPATH_URL:    https://api.stormpath.com/v1/applications/[myappurl]

2 ответа

Решение

Я оригинальный автор библиотеки express-stormpath, а также написал документацию Heroku для Stormpath.

Это на 100% моя ошибка, и это ошибка документации / конфигурации со стороны Stormpath.

Когда-то все наши библиотеки по умолчанию искали несколько переменных среды:

  • STORMPATH_URL (URL вашего приложения)
  • STORMPATH_API_KEY_ID
  • STORMPATH_API_KEY_SECRET

Однако некоторое время назад мы начали обновлять наши библиотеки и поняли, что хотим использовать более стандартный подход ко всем поддерживаемым языкам / фреймворкам / т. Д. Чтобы сделать вещи более явными, мы по существу переименовали переменные, которые мы смотрим по умолчанию:

  • STORMPATH_APPLICATION_HREF
  • STORMPATH_CLIENT_APIKEY_ID
  • STORMPATH_CLIENT_APIKEY_SECRET

К сожалению, мы еще не обновили нашу интеграцию или документацию Heroku, чтобы отразить эти изменения, поэтому вы столкнулись с этой неприятной проблемой.

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

Я искренне извиняюсь за все замешательство / разочарование. Иногда эти вещи проникают сквозь трещины, и подобные переживания заставляют меня понять, что нам нужно лучшее тестирование, чтобы ловить эти вещи раньше.

Я буду работать над некоторыми внутренними изменениями, чтобы убедиться, что у нас есть лучший процесс развертывания обновлений, подобных этому.

Если вы хотите бесплатную футболку Stormpath, поразите меня, и я отправлю вам ее в качестве небольшого способа сказать "спасибо" за то, что вы смирились с раздражением: randall@stormpath.com

После бесконечных часов мне удалось наконец заставить его работать, полностью удалив надстройку и переустановив ее через интерфейс командной строки Heroku, а затем экспортировав переменные STORMPATH_CLIENT_APIKEY_ID а также STORMPATH_CLIENT_APIKEY_SECRET, По какой-то причине его установка через панель инструментов Heroku приводит к тому, что express-stormpath не находит apiKey и секретные поля (даже если вы экспортируете переменные).

Другие вопросы по тегам