2016-03-20 27 views
6

Quando si creano le credenziali Oauth2.0 dell'API di Google su Google Developers Console, scelgo il tipo di applicazione "Applicazione Web".Gli "URI di reindirizzamento autorizzati" dell'applicazione Web di Google Oauth 2.0 devono terminare con un dominio pubblico di primo livello (come .com o .org)?

Nel campo "URI di reindirizzamento autorizzato", posso utilizzare http://127.0.0.1/callback, per me funziona correttamente sullo sviluppo locale.

ma quando voglio utilizzare le credenziali di Google API OAuth2.0 sul mio server (diciamo 99.99.99.99), devo usare http://99.99.99.99/callback come il mio "Autorizzato reindirizzare URI", ma google mi danno un avvertimento:

valido Redirect: http://99.99.99.99/callback deve terminare con un pubblico dominio di primo livello (ad esempio .com o .org)

Fatta eccezione per associare un pubblico dominio di livello superiore al mio assistente, che altro posso fare ?

I sviluppare in Django e utilizzare oauth2client a che fare con Google API OAuth2, così ci sono due tabella "oauth2_authentication_credential", "oauth2_authentication_flowmodel" nel mio database che hanno il valore delle credenziali in essa, li copio dal mio localhost di recidere, ma non funziona.

+0

Se è possibile utilizzare il dominio falso ad esempio: yourrealdomain-localhost.com. Aggiungi questo dominio al file hosts di Windows e fallo cercare 127.0.0.1 Quindi, puoi inserire questo dominio nella console di sviluppo di Google. – vee

risposta

9

c'è aiuto testo near field "Autorizzato reindirizzare URI", che afferma chiaramente che non è possibile utilizzare indirizzi IP pubblici:

autorizzato reindirizzare URI

Per l'uso con le richieste da un server web. Questo è il percorso nell'applicazione in cui gli utenti vengono reindirizzati dopo lo che si sono autenticati con Google. Il percorso verrà aggiunto con il codice di autorizzazione per l'accesso. Deve avere un protocollo. Impossibile contenere frammenti di URL o percorsi relativi. Non può essere un indirizzo IP pubblico .

127.0.0.1 non è IP pubblico, ma un loopback, è per questo che http://127.0.0.1/callback funziona bene. localhost anche potrebbe essere utilizzato: http://localhost/callback

Fatta eccezione per associare un pubblico dominio di livello superiore al mio assistente, che altro posso fare?

È possibile utilizzare il DNS gratuito per http://xip.io/. Quindi per IP 99.99.99.99 utilizzare http://99.99.99.99.xip.io/callback. E sarebbe risolto a http://99.99.99.99/callback.

+0

Grazie per la spiegazione di loopback e IP pubblico. Provo a visitare http://99.99.99.99.xip.io (ripetuto 99.99.99.99 con il mio ip reale del server), quindi restituisce una pagina con il testo "Benvenuti in nginx su Fedora!", Questa non è pagina del server, c'è qualcosa di sbagliato? – GoTop

+0

Tutto ciò che sta facendo xip.io è la risoluzione dei nomi degli host ('99.99.99.99.xip.io' in quel caso) agli indirizzi IP specificati in quel nome host e nulla più. "Benvenuti in nginx su Fedora!" è una pagina di destinazione predefinita di nginx. Hai distribuito la tua applicazione su un server e l'hai configurata? Vedi la tua app a http://99.99.99.99?Se la tua applicazione è accessibile a http://99.99.99.99, quindi http://99.99.99.99.xip.io dovrebbe funzionare bene. – polart

+0

Uso CentOS 7 e Nginx sul mio server. Posso accedere al mio progetto Django al 99,99,99. Secondo Lei suggerisco, ho trovato la pagina con "Benvenuto su nginx su Fedora!" è la pagina 404 del mio Ngnix. Ma ottengo una pagina diversa quando visito 99.99.99.99 e 99.99.99.99.xip.io, Forse c'è qualche errore di configurazione sul mio file di configurazione Nginx? – GoTop