2016-07-06 47 views
4

我想在我的Heroku應用程序上使用express-stormpath。我在這裏請遵照docs,和我的代碼是超級簡單:apiKey密鑰ID和祕密是必需的,即使他們在那裏快遞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. 

爲什麼它會被調用兩次,第二次爲什麼客戶端對象的文件,標識和密鑰的值爲空?

當我運行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'?這可能是Heroku中填充了錯誤的環境變量。 –

+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庫的原作者,並且爲Stormpath寫了Heroku文檔。

這是100%的錯,是Stormpath方面的文檔/配置錯誤。

早在一天,我們所有的圖書館找了幾個環境變量默認:

  • STORMPATH_URL(你的應用程序URL)
  • STORMPATH_API_KEY_ID
  • STORMPATH_API_KEY_SECRET

然而,而之前,我們開始升級我們的圖書館,並意識到我們希望在我們的所有支持中採用更加標準的方法rted語言/框架/等。爲了讓事情變得更明確,我們基本上是更名爲我們默認查找變量,來:

  • STORMPATH_APPLICATION_HREF
  • STORMPATH_CLIENT_APIKEY_ID
  • STORMPATH_CLIENT_APIKEY_SECRET

不幸的是,我們還沒有更新我們的Heroku集成或文檔來反映這些變化,這就是爲什麼你會遇到這個令人討厭的問題。

我剛剛向我們的工程團隊提交了一張票,以修復我們的Heroku插件默認包含我們的新變量的變量的名稱,我將在今天下午晚些時候更新Heroku文檔以修復此問題對於未來的其他人。

對於所有的困惑/沮喪,我深表歉意。有時候這些東西會穿過裂縫,像這樣的經歷讓我意識到我們需要更好的測試來早日捕捉這些東西。

我將在內部進行一些更改,以確保我們有更好的流程推出像這樣的更新。

如果你想要一個免費Stormpath T恤,打我,我會得到一個運出你作爲一個小的方式說「感謝」的忍受的煩惱:[email protected]

+0

我似乎有同樣的問題,但我沒有使用Heroku,只是一個本地快車應用程序,下面的示例發現在這裏:https ://stormpath.com/blog/making-expressjs-authentication-fun-again。相同的調試使我將策略驗證器調用兩次,第一次出現正確的數據,第二次數據全爲空。 – Carasel

+0

那麼如何處理API密鑰對呢?我下載了它,甚至在閱讀完教程後完全不知道,謝謝。 – Samoth

2

無數個小時後,我好不容易纔終於得到它的工作通過附加完全去除,並通過Heroku的CLI重新安裝它,然後出口變量STORMPATH_CLIENT_APIKEY_IDSTORMPATH_CLIENT_APIKEY_SECRET。出於某種原因,通過Heroku儀表板進行安裝會導致express-stormpath找不到apiKey和secret字段(即使您導出變量)。

相關問題