2011-12-16 10 views
13

sto lavorando per ottenere i dati del calendario da Google utilizzando OmniAuth e-2 google-OAuth strategia .OmniAuth usando google OAuth 2 strategia fallimento portata

Se non inserisco nulla nel campo scope funziona correttamente e ottengo le informazioni di default senza il messaggio auth/failure e posso usare l'app normalmente.

Tuttavia nel momento in cui aggiungo un ambito, come nell'esempio seguente, viene visualizzato "auth/failure? Message = invalid_credentials".

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], { :scope => 'https://www.google.com/calendar/feeds/' } 
end 

C'è qualcosa che mi manca o qualcosa che dovrei cambiare?

+0

Omniauth è solo per l'autenticazione. Come si ottengono i dati del calendario dopo aver ottenuto i token di autenticazione? – Sharj

risposta

23

Una e-mail rapido dalla strategia dell'autore google-OAuth-2 ha sottolineato quanto segue:

Se non si include gli ambiti profilo, non riesce ad autenticare.

Aggiungendo userinfo.email e userinfo.profile (insieme all'ambito del calendario) all'elenco separato da virgola :scope, sono riuscito a risolvere il problema.

Esempio:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
      { :scope => 'userinfo.email, userinfo.profile, https://www.googleapis.com/auth/calendar' } 
end 
+0

Dispari, continuo a ricevere questo errore: 'Alcuni ambiti richiesti non erano validi. {valid = [https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/userinfo.email], invalid = [https://www.googleapis.com/auth/ ]} "Ci sei passato dentro? –

+0

Si può incollare il campo: scope? – y4ku

+0

Uguale al tuo ambito. –

11

divertente, questo non ha funzionato per me. Sono riuscito a farlo funzionare, rimuovendo la virgola dall'ambito:

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
    { :scope => 'https://www.googleapis.com/auth/docs https://www.googleapis.com/auth/userinfo.profile' } 
end 
+0

Questo è ciò che ha funzionato anche per me. Rimuovi le virgole e utilizza gli URL completi. Grazie. – rmw

Problemi correlati