apiKey 密钥 ID 和秘密是必需的,即使它们在 express-stormpath 中

apiKey key ID and secret is required even though they're there in express-stormpath

我正在尝试在我的 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 and followed the 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 和 secret 的值为空?

当我运行heroku config | grep STORMPATH时,我得到

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

经过无尽的时间,我终于成功地通过完全删除附加组件并通过 Heroku CLI 重新安装它,然后导出变量 STORMPATH_CLIENT_APIKEY_IDSTORMPATH_CLIENT_APIKEY_SECRET。出于某种原因,通过 Heroku Dashboard 安装它会导致 express-stormpath 找不到 apiKey 和 secret 字段(即使您导出变量)。

我是 express-stormpath 库的原作者,还为 Stormpath 编写了 Heroku 文档。

这 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 T 恤,请联系我,我会把一件寄给你,以此作为对 'thanks' 忍受烦恼的一种小方式说:运行dall@stormpath.com