2016-07-06 2 views
4

Я пытаюсь использовать express-stormpath в своем приложении Heroku. Я следую за документы здесь, и мой код супер просто:Идентификатор ключа и секретный ключ apiKey требуется, даже если они есть в express-stormpath

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); 
}); 

Я уже смотрел на this question и последовал за Heroku devcenter docs. Документы говорят, что для приложения 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 строки в stormpath-config strategy valdiator для печати объекта клиента, и это дает мне это:

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

Error: API key ID and secret is required. 

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

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

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

Что такое вывод 'heroku config | grep STORMPATH'? Возможно, что в Героку заселяются неправильные переменные среды. –

+0

Редактированные переменные env выглядят правильно установленными, но ValidateClientConfigStrategy.js все еще печатает '{file: null, id: null, secret: null}' – arete

+0

Можете ли вы попробовать использовать 'heroku config: set' ([docs] (https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application)), чтобы вместо этого установить эти переменные среды: 'STORMPATH_CLIENT_APIKEY_ID',' STORMPATH_CLIENT_APIKEY_SECRET', 'STORMPATH_APPLICATION_HREF' –

ответ

2

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

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

Назад в день, все наши библиотеки искали несколько переменных окружения по умолчанию:

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

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

  • STORMPATH_APPLICATION_HREF
  • STORMPATH_CLIENT_APIKEY_ID
  • STORMPATH_CLIENT_APIKEY_SECRET

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

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

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

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

Если вы хотите бесплатно Stormpath футболку, ударил меня, и я получу один погружено к вам как небольшой способ сказать «спасибо» за расклеивание с раздражением: [email protected]

+0

Кажется, у меня такая же проблема, но я не использую Heroku, только локальное экспресс-приложение, следуя примеру, найденному здесь: https : //stormpath.com/blog/making-expressjs-authentication-fun-again. Такая же отладка привела меня к тому, что валидатор стратегии вызывается дважды, причем правильные данные появляются в первый раз, а все данные равны нулю во второй раз. – Carasel

+0

Итак, как бороться с парой ключей API? Я загрузил его и совершенно не знаю даже после прочтения учебников, спасибо. – Samoth

2

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

Смежные вопросы