2016-07-06 14 views
4

Ich versuche, Express-stormpath auf meiner Heroku App zu verwenden. Ich verfolge die Dokumentation hier, und mein Code ist super einfach:apiKey Schlüssel ID und Geheimnis ist erforderlich, obwohl sie dort in Express-stormpath sind

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

ich schon bei this question sah und folgte dem Heroku devcenter docs. Die Dokumente sagen, dass es für eine Heroku-App nicht notwendig ist, Optionen zu übergeben, aber ich habe immer noch versucht, Optionen zu übergeben und nichts funktioniert. Zum Beispiel habe ich das versucht:

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

Um zu versuchen und sehen, was los ist, habe ich eine console.log Linie zum stormpath-config strategy valdiator das Client-Objekt zu drucken, und es gibt mir diese:

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

Error: API key ID and secret is required. 

Warum wird es zweimal aufgerufen, und beim zweiten Mal, warum hat das Client-Objekt Null-Werte für die Datei, ID und Geheimnis?

Als ich heroku config | grep STORMPATH laufen, bekomme ich

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

Was ist die Ausgabe von 'heroku config | grep STORMPATH'? Es kann sein, dass die falschen Umgebungsvariablen in Heroku aufgefüllt werden. –

+0

Edited - env-Variablen sehen korrekt aus, aber ValidateClientConfigStrategy.js druckt noch '{file: null, id: null, secret: null}' – arete

+0

Können Sie versuchen, 'heroku config: set' ([docs] (https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application)), um diese Umgebungsvariablen stattdessen zu setzen: 'STORMPATH_CLIENT_APIKEY_ID',' STORMPATH_CLIENT_APIKEY_SECRET', 'STORMPATH_APPLICATION_HREF' –

Antwort

2

Ich bin der ursprüngliche Autor der Express-Stormpath-Bibliothek und schrieb auch die Heroku-Dokumentation für Stormpath.

Das ist 100% mein Fehler und ist ein Dokumentations-/Konfigurationsfehler auf der Seite von Stormpath.

Zurück in den Tag, alle unsere Bibliotheken suchten mehrere Umgebungsvariablen standardmäßig:

  • STORMPATH_URL (URL Anwendung)
  • STORMPATH_API_KEY_ID
  • STORMPATH_API_KEY_SECRET

jedoch ein Vor einiger Zeit haben wir damit begonnen, unsere Bibliotheken aufzurüsten, und wir haben erkannt, dass wir bei all unseren Angeboten einen Standardansatz verfolgen wollten rtet Sprachen/Frameworks/usw. Um die Dinge noch deutlicher zu machen, werden wir im Wesentlichen umbenannt die Variablen, die wir für standardmäßig aussehen, zu:

  • STORMPATH_APPLICATION_HREF
  • STORMPATH_CLIENT_APIKEY_ID
  • STORMPATH_CLIENT_APIKEY_SECRET

Leider haben wir unsere Heroku-Integration oder -Dokumentation noch nicht aktualisiert, um diese Änderungen widerzuspiegeln. Aus diesem Grund ist Ihnen dieses unangenehme Problem gerade aufgefallen.

Ich habe gerade ein Ticket an unser Technikteam geschickt, um die Namen der Variablen zu korrigieren, die unser Heroku-Addon standardmäßig für unsere neuen enthält, und ich werde später am Nachmittag unsere Heroku-Dokumentation aktualisieren, um das Problem zu beheben für jeden anderen in der Zukunft.

Ich bedauere aufrichtig die Verwirrung/Frustration. Manchmal rutschen diese Dinge durch die Ritzen und Erfahrungen wie diese machen mir klar, dass wir besser testen müssen, um das Zeug früher zu fangen.

Ich werde intern an einigen Änderungen arbeiten, um sicherzustellen, dass wir einen besseren Prozess rund um das Ausrollen von Updates wie diesem haben.

Wenn Sie ein kostenloses Stormpath T-Shirt wollen, trifft mich und ich werde eine verschifft Sie als kleiner Weg ‚Dank‘ zu sagen bekommen, um mit dem Ärger Aufstellen: [email protected]

+0

Ich habe das gleiche Problem, aber ich benutze nicht Heroku, nur eine lokale Express-App, nach dem Beispiel hier gefunden: https : //stormpath.com/blog/making-expressjs-authentication-fun-again. Das gleiche Debugging hat mich dazu gebracht, dass der Strategieprüfer zweimal aufgerufen wird, wobei die korrekten Daten das erste Mal erscheinen und die Daten alle zum zweiten Mal null sind. – Carasel

+0

So, wie mit dem API-Schlüsselpaar umzugehen? Ich habe es heruntergeladen und habe keine Ahnung, auch nachdem ich die Tutorials gelesen habe, danke. – Samoth

2

Nach endlosen Stunden, ich es endlich geschafft, arbeiten, um es durch das Add-on vollständig zu entfernen und neu zu installieren es über die Heroku CLI und dann exportieren Variablen STORMPATH_CLIENT_APIKEY_ID und STORMPATH_CLIENT_APIKEY_SECRET. Aus irgendeinem Grund bewirkt die Installation über das Heroku-Dashboard, dass Express-Stormpath die apiKey- und geheimen Felder nicht findet (selbst wenn Sie Variablen exportieren).