私のサイトでは、ユーザーは Google アカウントでサインアップできます。私はそれをうまく行うことができ、アクセストークンとアクセストークンの有効期限が切れたときに保存します。また、以前のアクセストークンが期限切れになった場合、新しいトークンを取得します。ユーザーがサインアップしたGoogleアカウントですでにログインしている場合、ユーザーを自動的にログインできるようにしたい. それは可能ですか?将来、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