如何检查谷歌用户是否已经在我的网站上建立了帐户?

时间:2013-02-20 22:18:30

标签: ruby-on-rails ruby omniauth access-token

在我的网站中,用户可以使用自己的Google帐户进行注册。我能够做到这一点很好,我存储他们的访问令牌和访问令牌到期时。如果他们之前的访问令牌过期,我也会得到一个新令牌。如果用户已经使用他们注册的Google帐户登录,我希望能够自动登录用户。这甚至可能吗?我正在使用omniauth-google-oauth2和google-ruby-api-client,因为我希望将来使用谷歌文档和谷歌日历。

这是我如何处理用户的保存和注册。

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

0 个答案:

没有答案