Witam
Jestem świeżakiem w rails’ach i napotkałem problem, z logowaniem do usług google. Mianowicie przy logowaniu nie dostaję w request.env omniauth.auth.
Fragment Gemfile
gem 'google-api-client', '0.7.1', :require => 'google/api_client'
gem 'omniauth', '1.2.1'
gem 'omniauth-google-oauth2', '0.2.4'
omniauth.rb
OmniAuth.config.full_host = "http://localhost:3000
Rails.application.config.middleware.use OmniAuth::Builder do
provider(:google_oauth2,
'CLIENT_ID od googla',
'CLIENT_SECRET od googla',
{
approval_prompt:'force',
scope: 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/calendar',
redirect_url: 'http://localhost:3000/auth/google-oauth/callback'
}
)
end
Controler
class GoogleAuthController < ApplicationController
def create
#request.env["omniauth.auth"] <- zawsze zwraca mi nil
@auth = request.env["omniauth.auth"]
unless @auth.nil?
#export danych do google calendar
else
flash[:danger] = "Error during connection with Google API."
redirect_to root_path
end
end
end
Włączone odpowiednie API.
Dodam, że nie interesuje mnie łaczenie kont z kontami google (może ew. przechowywać klucz aktualnej sesji googla aby nie musiał sie człowiek 3 razy logowac jak chce exportować dane)
PS. Pokazalbym wam jeszcze request.env ale przy tworzeniu tematu nie mogę nic wkleić (bug czy zamierzone?)
Z góry dziękuję za pomoc.
Pozdrawiam
EDIT
Problem rozwiązany. Zamieniłem
{ :access_type => 'offline', :prompt => 'consent', :approval_prompt => 'force', :scope => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/calendar', :redirect_uri => 'http://localhost:3000/auth/google-oauth2/callback', }
na
{ access_type: 'offline', prompt: 'consent', approval_prompt: 'force', scope: 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/calendar', }
i zadziałało.