2014-04-07 11 views
6

UPDATE: Quando distribuisco l'app su meteor.com non ottengo nessuno degli stessi problemi, quindi il problema è sicuramente correlato all'ambiente di sviluppo e sospetto a che fare con ROOT_URL e il modo in cui vengono gestiti i reindirizzamenti.Meteor on Nitrous - Can not Get loginWithFacebook per funzionare


Sono in esecuzione Meteor su Nitrous.io.

Ho installato il pacchetto di conti-facebook e hanno aggiunto il seguente alla cartella del server:

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

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

Ho anche cambiato l'URL radice della mia applicazione all'avvio:

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

I hai incluso lo stesso URL nelle mie app "Impostazioni di base":

enter image description here

e le impostazioni 'avanzate':

enter image description here

[ovviamente, il ***** è in realtà una stringa che identifica la mia Nitrous 'scatola' - ho redatto qui]

Tuttavia, quando io cerco di autorizzare utilizzando Facebook ricevo il seguente errore:

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

ho provato un certo numero di differenti variazioni su queste impostazioni, ma senza successo.

Qualcun altro ha riscontrato questo problema? Aiuto apprezzato

risposta

10

Il problema è ROOT_URL non impostato sull'URL della casella. Noterai che l'uscita del terminale dice ancora => App running at: http://localhost:3000/ quando avvii l'app con il comando meteor.

Meteor.absoluteUrl è solo una funzione di utilità (https://github.com/meteor/meteor/issues/858). Devi eseguire l'override della variabile di ambiente ROOT_URL all'avvio dell'app.

Provare ad avviare l'app con ROOT_URL=http://accounts-*****.apse2.nitrousbox.com/ meteor. Quindi, il processo di autenticazione di Facebook dovrebbe funzionare correttamente.

+0

Thank you - che funziona. Mi chiedo se c'è una scorciatoia a questo durante lo sviluppo perché altrimenti è un sacco di digitazione. Sto postando sotto una schermata della soluzione richiesta perché ero sicuramente confuso. –

+0

Con pro.nitrous.io è possibile impostare un env var nella config del contenitore. Assicurati di includere la: #### porta – Vish

+0

giorno salvato! Devo dire grazie @laktek che questo problema è stato davvero fastidioso! –

1

laktek's answer above è corretto. Aggiungo questa immagine per illustrare come viene raggiunta la soluzione perché non mi è sembrata subito ovvia.

omettere la funzione Meteor.absoluteUrl e invece iniziare meteora all'interno della console di azoto come segue:

Problemi correlati