2012-06-10 13 views
6

Sono sicuro che molti sviluppatori Django devono trovare questo problema quando si utilizza social-auth. Inizialmente quando lo sviluppate, vorreste testarlo sul vostro server locale, quindi dovreste reindirizzare il nome di dominio in etc/hosts.django-social-auth: come reindirizzare example.com a 127.0.0.1:8000?

sono arrivato lungo questo nella documentazione:

https://github.com/omab/django-social-auth#facebook

Se si definisce un URL di reindirizzamento in pagina di configurazione di Facebook, essere sicuri di non definire http://localhost:8000 perché non sarà lavoro quando il test . Invece definisco http://myapp.com e configuro una mappatura su/etc/hosts o uso dnsmasq.

Dalla mia comprensione non è possibile definire alcuna porta in/etc/hosts.

Quindi la definizione di questa voce ci:

127.0.0.1  example.com 

ancora non ha colpito il mio server Django che funziona a 127.0.0.1:8000.

Come si fa a fare questo?

Grazie,

+1

Se si digita mysite.com nella barra degli indirizzi, verrà utilizzata la porta 80 per impostazione predefinita. Prova 'mysite.com: 8000' –

+0

Ahh grazie non lo sapevo. Ma l'autore dice anche: "Invece definisco http://myapp.com e configuro una mappatura su/etc/hosts o uso dnsmasq." Quindi non installa myapp.com:8000 sotto le impostazioni di Facebook. – Houman

+0

Beh, non so se il numero di porta è significativo per l'autenticazione con Facebook, ma l'altra opzione è quella di eseguire Django sulla porta 80 che richiederà i permessi di root e quella porta non è già stata presa (ad esempio da Apache). –

risposta

0

ho risolto il problema di reindirizzamento seguendo le istruzioni qui: https://serverfault.com/questions/397364/how-to-setup-named-virtual-hosts-in-nginx

In breve, è necessario una voce in/etc/hosts come ho sopra, più delega nginx mezzo.

+0

nota potresti semplicemente usare 127.0.0.1.xip.io – jterrace

+0

@ Kave, la risposta che hai citato nella tua risposta serverfault funziona? Vedo in quel commento che stavi ancora lottando con il problema, fammi sapere – daydreamer

+0

Daydreamer. Sì, ha funzionato. Lo abbiamo risolto nella chat. Effettivamente l'errore che ho fatto è stato l'eliminazione della linea 127.0.0.1 di MySite.com da/etc/hosts prima di tentare la soluzione di nginx. Non avevo capito di aver bisogno di entrambi. – Houman

0

Installare fiddler. Una volta installato, vai su Strumenti> Host.

Quindi è possibile mappare da 127.0.0.1:8000 a mysite.com

3

Tutti dicono, "aggiungi example.com per il file hosts ...", ma trascura di menzionare che si dovrebbe usare example.com: 8000 dopo aver avviato il runserver. Qui ci sono passaggi più dettagliati che hanno lavorato per me:

Su Linux:

  • aprire un terminale
  • sudo gedit (o sostituire gedit con l'editor di testo di scelta)
  • Aprire le etc/hosts il file
  • aggiungere una riga: 127.0.0.1 example.com (se si dispone già di una riga che inizia con 127.0.0.1 si può lasciare - https://serverfault.com/questions/231844/is-it-safe-to-add-additional-127-0-0-1-entries-to-etc-hosts)
  • salvare il file
  • avvia il tuo server django dev - python manage.py runserver
  • apri un browser e vai a example.com:8000 (questo fornisce il callback corretto per google e altri siti che non funzioneranno con 127.0.0.1 o localhost)
  • Dovresti vedere la home page del tuo sito django.
  • Accedere al sito social con cui si desidera connettersi e impostare l'ID client, utilizzando example.com come nome del sito Web.Ad esempio, l'URL di callback per Google è http://example.com:8000/complete/google-oauth2/
  • copiare le impostazioni chiave/ID e incollare nel vostro SETTINGS.py
  • Ora il server dev dovrebbe funzionare!

So che questo è un post più vecchio, ma non sono riuscito a trovare i passaggi completi da nessuna parte. Si prega di aggiungere chiarimenti, se necessario, in quanto non sono un esperto in questo.