Miesiące temu stworzyłem aplikację szyn, która została uwierzytelniona za pomocą google przy użyciu oauth2 - w szczególności gemu omniauth-google-oauth2. Miałem wszystkie kroki, aby utworzyć uwierzytelnianie i przechowywać token odświeżania, ale ostatnio oauth2 przestał odsyłać "refresh_token" jako część odpowiedzi. Początkowo ja otrzymywał odpowiedź, która zawierała:Jak mogę odzyskać "refresh_token" dla aplikacji rails z omniauth google oauth2?
credentials: {
refresh_token: XXX,
token: YYY,
expires_at: 1374840767,
expires: true
},
Teraz tylko wrócić token, który wygasa w ciągu godziny:
credentials: {
token: YYY,
expires_at: 1374840767,
expires: true
},
ja naprawdę nie wiem, co zrobiłem po stronie aplikacji, aby zmień to, więc nie jestem pewien, czy coś zmieniło się w google, czy było to coś, co zrobiłem. Dla kontekście mój kod wygląda następująco:
inicjalizatorów/omniauth.rb:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, 'KEY', 'SECRET', {:scope => "userinfo.email,userinfo.profile,analytics.readonly,adsense.readonly"}
end
authentications_controller.rb gdzie otrzymam odpowiedź:
def create
auth = request.env["omniauth.auth"]
params = request.env["omniauth.params"]
project = Project.find(params['project_id'])
Authentication.create(:project_id => project.id, :provider => auth['provider'], :uid => auth['uid'], :access_token => auth['credentials']['refresh_token'])
flash[:notice] = "Authentication successful."
redirect_to owner_view_project_path(project)
end
to jest możliwe, że czegoś brakuje w mój plik initializers/omniauth.rb? Próbowałem dodanie poniższych opcji do mieszania, ale nie wydaje się, aby przywrócić token odświeżania:
:approval_prompt => "force", :access_type => "offline"
Każda pomoc będzie bardzo mile widziane! Z góry dziękuję!
Czy rozwiązałeś ten problem? Teraz mam ten sam problem i chciałbym zobaczyć twoje rozwiązanie. Dzięki! –