ruby on rails - Google Oauth2 automatially renew token -


i'm adding oauth2 via google rails app using omniauth-google-oauth2 gem. have set according gem's readme. when click authorize button in app, directed google authorize app. once i'm sent redirect path, hash of data includes token, refresh_token, , expires_at (not expires_in), expires_at equal time.now.to_i. hash looks this:

=> auth.credentials => {       token: 'token',       refresh_token: 'refresh_token',       expires_at: 1468603958       expires: true   } 

what programmatically renew user's token every time log app, without forcing them go through initial authorization process. have similar token renewal flow set facebook, can't figure out how make work google, since token expires_at time now.

my question two-part:

  1. shouldn't value of expires_at in future (e.g. 1 hour now, or 30 days now)?
  2. how can programmatically refresh token using refresh_token got when first authorized app? can't seem find single example in ruby on how this. wanted set method on generalcontroller in app checks expires_at value of identity model , runs logic renew token, can't figure out how renew token. seems problematic given expires_at value got google equal time.now.to_i. if uses value, trigger infinite loop.

here's want do in pseudo code:

class generalcontroller < applicationcontroller     before_action :renew_google_token, only: [:home]      def renew_google_token         # first identity expire. repeated unti lall identities updated         current_user.identities.where(provider: :google).where("expires_at < (?)", time.now + 7.days).each |identity|             # logic pings google , renews token             new_token_hash =             identity.update(token: new_token_hash.token, expires_at: time.at(new_token_hash.expires_at))         end     end end 


Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -