如何使用Ruby客户端刷新Google API的access_token?

时间:2016-08-06 18:51:51

标签: ruby google-api google-api-client google-authentication google-api-ruby-client

我有一个工作应用程序(Rails),用于验证用户并将她的令牌保存在Redis商店中。

如果我理解正确,将googleauth与google-api-client一起使用,客户端对象将根据需要刷新访问令牌(单独)?但这不会发生,令牌过期,一段时间后我得到403错误。

如果问题在我身边 - 可以/我应该手动调用新的access_token,如果是,我该怎么做?

我使用的代码主要来自quickstart guide

gem 'google-api-client', require: 'google/apis/calendar_v3'

def authorizer
  scope = Google::Apis::CalendarV3::AUTH_CALENDAR
  client_id = Google::Auth::ClientId.from_hash(JSON.parse(ENV['GOOGLE_CLIENT_SECRETS']))
  token_store = Google::Auth::Stores::RedisTokenStore.new(redis: $redis)
  authorizer = Google::Auth::WebUserAuthorizer.new(client_id, scope, token_store)
  authorizer
end

def authenticate_the_user
  user_id = "1"
  credentials = authorizer.get_credentials(user_id)
  redirect_to authorizer.get_authorization_url(login_hint: user_id, request: request, base_url: "http://localhost:3000")
end

def handle_callback
  credentials = authorizer.get_and_store_credentials_from_code(user_id: "1", code: params[:code], base_url: "http://localhost:3000/oauth2callback")
end

0 个答案:

没有答案