在我的网站中,用户可以使用他们的谷歌帐户注册。我可以很好地做到这一点,并且我存储了他们的访问令牌以及访问令牌何时过期。如果他们以前的访问令牌一旦过期,我也会得到一个新令牌。如果他们已经使用他们注册的谷歌帐户登录,我希望能够自动登录用户。这甚至可能吗?我正在使用omniauth-google-oauth2 和google-ruby-api-client,因为我想在将来使用google docs 和google calendar。
这是我处理用户保存和注册的方式。
def self.find_for_google_oauth2(access_token, signed_in_resource=nil)
data = access_token.info
user = User.where(:email => data["email"]).first
unless user
user = User.create(name: data["name"],
email: data["email"],
password: Devise.friendly_token[0,20],
access_token: access_token.credentials.token,
expiredate: DateTime.now + (access_token.credentials.expires_at/1000).seconds,
expires: access_token.credentials.expires
)
end
if (user.expires && (DateTime.now > user.expiredate))
user.access_token = access_token.credentials.token
user.expiredate = DateTime.now + (access_token.credentials.expires_at/1000).seconds
user.expires = access_token.credentials.expires
end
user
end