我试图在我的Heroku应用程序上使用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'
},
}));
为了试着看看发生了什么,我在stormpath-config strategy valdiator添加了一个console.log行来打印客户端对象,它给了我这个:
{ file: './apiKey-xxx.properties',
id: 'xxx',
secret: 'xxx' }
{ file: null, id: null, secret: null }
Error: API key ID and secret is required.
为什么它被调用两次,第二次,为什么客户端对象具有文件,id和秘密的空值?
当我运行heroku config | grep STORMPATH
时,我得到了
STORMPATH_API_KEY_ID: xxxx
STORMPATH_API_KEY_SECRET: xxxx
STORMPATH_URL: https://api.stormpath.com/v1/applications/[myappurl]
答案 0 :(得分:2)
经过无数个小时后,我终于通过完全删除加载项并通过 Heroku CLI 重新安装它然后导出变量STORMPATH_CLIENT_APIKEY_ID
和{{1 }}。出于某种原因,通过Heroku Dashboard安装它会导致express-stormpath找不到apiKey和secret字段(即使你导出变量)。
答案 1 :(得分:2)
我是express-stormpath库的原作者,还为Stormpath编写了Heroku文档。
这是我的错,这是Stormpath方面的文档/配置错误。
在当天,我们所有的库默认都会查找几个环境变量:
STORMPATH_URL
(您的申请网址)STORMPATH_API_KEY_ID
STORMPATH_API_KEY_SECRET
然而,不久之前,我们开始升级我们的库,并意识到我们希望在所有支持的语言/框架/等方面采用更标准的方法。为了使事情更加明确,我们基本上默认情况下,将我们查找的变量重命名为:
STORMPATH_APPLICATION_HREF
STORMPATH_CLIENT_APIKEY_ID
STORMPATH_CLIENT_APIKEY_SECRET
不幸的是,我们还没有更新我们的Heroku集成或文档来反映这些变化,这就是为什么你遇到这个讨厌的问题。
我刚刚向我们的工程团队提交了一张票,用于修复我们的Heroku插件默认配置的变量名称以包含我们的新变量,我将在今天下午更新我们的Heroku文档以修复此问题。将来的其他任何人。
我真的很抱歉所有的困惑/沮丧。有时这些东西会滑过这些裂缝,这样的经历让我意识到我们需要更好的测试来及早发现这些东西。
我将在内部进行一些更改,以确保我们有更好的流程来推出像这样的更新。
如果你想要一件免费的Stormpath T恤,请打我,我会把一个发给你的,作为一个小小的方式说'谢谢'忍受烦恼:randall@stormpath.com