Требуется идентификатор ключа и секретный ключ 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 и секретные поля (даже если вы экспортируете переменные).