我在Rails上有一个应用程序,我正在尝试使用Google登录,这是我登录的主要方式。
我正在使用google-api-ruby-client
。登录页面具有链接到auth uri的Google按钮,使用客户端机密生成。
fetch_access_token!
使用'email'和'profile'范围从用户那里获取访问令牌。https://www.googleapis.com/oauth2/v1/userinfo
获取用户名,电子邮件和Google ID。但是,我很困惑如何识别用户。例如,用户第一次登录时:
session[:access_token] = auth_client.access_token
session[:current_user] = google_id
(来自userinfo
端点)随后当用户访问网站上的任何页面时,我将使用before_filter :authenticate
方法检查session[:access_token]
,在数据库中查询相同的acccess_token
并查看{{从数据库返回的1}}与google_id
匹配。
当用户仍在使用我的网站时访问令牌过期时,我可能会使用刷新令牌获取新的访问令牌并更新会话和数据库信息。我可以这样做,因为我在会话中仍然拥有用户的ID。
当用户稍后回到网站时,我可以再次获得新的访问令牌并更新访问令牌并刷新数据库和会话中的令牌,因为用户必须通过Google再次登录才能匹配打开数据库中的电子邮件或ID。
3个问题:
session[:current_user]
替换为我自己随机生成的ID,对吗?