2014-04-07 9 views
6

UPDATE: Wenn ich die App auf meteor.com bereitstellen, bekomme ich keine der gleichen Probleme, so dass das Problem definitiv mit der Entwicklungsumgebung verbunden ist und ich vermute etwas zu tun mit ROOT_URL und der Art und Weise, wie Redirects behandelt werden.Meteor auf Nitrous - kann nicht anmelden mitFacebook zu arbeiten


Ich betreibe Meteor auf Nitrous.io.

Ich habe die Konten-facebook-Paket installiert und haben die folgenden auf den Server-Ordner hinzugefügt:

ServiceConfiguration.configurations.remove({ 
    service: "facebook" 
}); 

ServiceConfiguration.configurations.insert({ 
    service: "facebook", 
    appId: '31058319242*****', 
    secret: '4f6c8a9b5aab235111e97*********', 
    site_url: 'http://accounts-*****.apse2.nitrousbox.com/' 
}); 

Ich habe auch die Stamm-URL meiner Anwendung beim Start geändert:

Meteor.startup(function() { 
    Meteor.absoluteUrl.defaultOptions.rootUrl = "http://accounts-*****.apse2.nitrousbox.com/" 
}); 

I habe die exakt gleiche URL zu den 'Basic' Einstellungen meiner Apps hinzugefügt:

enter image description here

und 'Advanced' Einstellungen:

enter image description here

[offensichtlich, die ***** ist eigentlich ein String meine Nitrous 'Box' zu identifizieren - ich habe es hier geschwärzt]

Wenn jedoch ich versuche zu genehmigen facebook ich mit dem folgenden Fehler:

Exception while invoking method 'login' Error: Failed to complete OAuth handshake with Facebook. failed [400] 
{ 
"error": 
    { 
    "message":"Invalid redirect_uri: Given URL is not allowed by the Application configuration.", 
    "type":"OAuthException", 
    "code":191 
    } 
} 

ich habe versucht, eine Reihe von verschiedenen Variationen dieser Einstellungen, aber ohne Erfolg.

Ist noch jemand auf dieses Problem gestoßen? Hilfe geschätzt.

Antwort

10

Das Problem ist, dass ROOT_URL nicht auf die URL der Box eingestellt ist. Sie werden bemerken, Terminal-Ausgang sagt immer noch => App running at: http://localhost:3000/, wenn Sie die App mit meteor Befehl starten.

Meteor.absoluteUrl ist nur eine Dienstprogrammfunktion (https://github.com/meteor/meteor/issues/858). Sie müssen die Umgebungsvariable ROOT_URL beim Starten der App überschreiben.

Versuchen Sie, die App mit ROOT_URL=http://accounts-*****.apse2.nitrousbox.com/ meteor zu starten. Dann sollte Facebook Auth-Prozess korrekt funktionieren.

+0

Danke - das funktioniert. Ich frage mich, ob es während der Entwicklung eine Abkürzung gibt, weil sonst viel geschrieben wird. Ich poste unten eine Screenshot der benötigten Lösung, weil ich sicherlich verwirrt war. –

+0

Mit pro.nitrous.io können Sie eine env var in der Konfiguration des Containers festlegen. Stellen Sie sicher, dass Sie den: #### port – Vish

+0

Tag gespeichert haben! Ich muss sagen, danke @laktek dieses Problem war wirklich nervig! –

1

laktek's answer above ist korrekt. Ich füge dieses Bild hinzu, um zu zeigen, wie die Lösung erreicht wird, weil sie für mich nicht sofort offensichtlich war.

auslassen die Meteor.absoluteUrl Funktion und stattdessen Meteor in der nitrosen Konsole starten wie folgt:

Verwandte Themen