Perché Google Oauth restituisce `redirect_urI` non valido nella mia app Rails?

Sto aggiungendo Google Oauth2 a un’applicazione Rails, ma non sono riuscito a superare le prime fasi.

Ho impostato un’app e definito l’ID client e il segreto.Ma sto ricevendo il Invalid parameter value for redirect_uri: Non-public domains not allowed: http://localhost/path/to/callback

Cosa significa questo? È perché sto testando su un ambiente di sviluppo locale?

Grazie per qualsiasi idea

MODIFICARE

Ciò potrebbe essere dovuto al fatto che l’URI dell’app differisce dall’URI di invio. Ma quando vado su Google e cerco di autorizzare il percorso della mia app di sviluppo, OAuth2 redirect is invalid . Si tratta di una limitazione dell’utilizzo di un’app localmente ospitata?

MODIFICA 2

La richiesta che sto generando si presenta così:

 https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=###########&redirect_uri=http%3A%2F%2Fmyapp.dev%2Fusers%2Fauth%2Fgoogle_oauth2%2Fcallback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&approval_prompt=&access_type=offline 

È corretto. Ho provato questo con client_id includendo ed escludendo la sezione .apps.googleusercontent.com . Nessuno dei due sembra funzionare.

Stavo ricevendo l’errore di reindirizzamento per la mia applicazione python / tornado in esecuzione su ubuntu. L’utilizzo di localhost non ha funzionato come evidenziata la risposta accettata. Google vuole un dominio pubblico.

La mia soluzione era quella di “example.com” che è pubblico e creare un sottodominio nel mio file / etc / hosts. Il sottodominio funzionerebbe sulla mia casella di sviluppo locale e google sarebbe soddisfatto del dominio example.com. Ho registrato i reindirizzamenti tramite la console di google e il reindirizzamento ha funzionato correttamente con me.

Ho aggiunto quanto segue al mio / etc / hosts:

 192.168.33.100 devbox devbox.example.com 

Nel mio caso l’IP era quello della mia macchina. Potrei anche aver usato 127.0.0.1 invece.

La mia console dell’API di Google ( https://code.google.com/apis/console ) configurata per un nuovo ID cliente era:

  • “Tipo di applicazione: applicazione Web”.
  • Tramite “Il tuo sito o nome host (più opzioni)”:

Usando xip.io puoi fornire un URL pubblico per redirect a Mi piace http://your_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback

Testato e funzionante.

Ho usato il mio nome host pubblico. Aiuta se hai un indirizzo IP statico. Ho usato http://www.displaymyhostname.com/ per ottenere il mio nome host. L’ho inserito direttamente nel campo delle origini JavaScript autorizzate quando ho creato un nuovo ID client dell’applicazione Web .

PS Il mio nome host è simile a questo: 111.111.111.111.static.exetel.com.au

Questa è la mia risposta a una domanda correlata https://stackoverflow.com/a/23517146/1320083

Per chiunque altro trovando questo, il mio problema era la combinazione di diverse cose.

  1. Non sono riuscito a richiamare i callback su una macchina locale. La console API della console suggerisce che è ansible, ma non ho potuto farlo funzionare. Non sono sicuro che questo sia al servizio, o alla mia rete / connessione / firewall / ecc.

  2. Nella console dell’API devi specificare l’URI di reindirizzamento completo, non solo l’url di root sulla tua app.

  3. Google elenca i parametri di ambito qui https://developers.google.com/gdata/faq#AuthScopes . Sembra che questa informazione sia obsoleta e il formato corretto per questi è ora https://www.googleapis.com/auth/plus.me , https://www.googleapis.com/auth/youtube , ecc. Forse qualcun altro posso confermare questo?

Ho avuto anche qualche altra cosa. Avevo scritto una spiegazione completa su un’altra delle mie domande qui su SO. Purtroppo i miei commenti sono stati cancellati anziché spostati da un moderatore perché ho postato nel posto sbagliato. Ora non riesco a ricordare tutto ciò che ho scritto. Per gli altri che affrontano un problema simile, sentitevi liberi di commentare, potrebbe farmi perdere la memoria in modo da poter offrire alcune idee.

Errore redirect_uri_mismatch: questo errore può verificarsi quando hai inserito un ID bundle errato nel tuo progetto Google Developers Console che non corrisponde all’ID bundle della tua app. Verifica che l’ID client e l’ID bundle corrispondano ai valori visualizzati nella Developers Console.

Per me è stata la funzione che ha creato l’URL di Google. Inserisco interruzioni di riga nella stringa, una volta rimossa la linea, l’url ha funzionato di nuovo.

Ho affrontato questo problema ma ho trovato che non era davvero un problema. Come spiegato nel mio blog , puoi utilizzare l’URI di reindirizzamento pubblico anche quando lavori sul tuo computer di sviluppo localhost. Google restituirà semplicemente il codice di authorization all’URI pubblico in cui è ansible tagliarlo e incollarlo sul computer locale.