【发布时间】:2017-12-20 16:35:45
【问题描述】:
我正在使用 omniauth 通过 Google 对用户进行身份验证。当用户通过 Google 登录时,我会检查是否已存在使用相同电子邮件的帐户(如果存在,我会拒绝登录)。
当我创建新的用户模型时,我给它名称、电子邮件和用户“图像”的 URL。我不确定当用户更改他们在 Google 上的设置时如何动态更新我的数据库中的信息,包括他们更改个人资料图片时的 image_url。
这个场景的一个很好的例子就是这个 Stack Overflow;我在 Google 上注册了 SO。 (最近)更改了我的个人资料图片后,我惊讶地发现我的旧 Google 图片仍然附加到我的 SO 个人资料中。也许谷歌需要时间来改变旧的 URL 来代表新的图像。我注意到 Google 的 一些 部分使用我的新图像,而其他部分继续使用我的旧图像。当然,这个问题与谷歌的头像机制没有太大关系,我只是觉得这是一个完美的例子。
我的问题是:
我应该这样做,还是应该让用户通过我的网站更改他们的详细信息,完全忽略他们的 Google 个人资料会发生什么?
如果我应该这样做,最好的方法是什么?检查每次登录并不理想,因为用户可能几天甚至几周都不会注销。
我应该存储 Google 身份验证令牌吗?目前,我不需要进行任何 Google API 调用——我只对“uid”使用 OAuth,以确保它是同一个帐户登录(根本不使用电子邮件)。
我认为答案不会是“不存储用户信息,而是查询 Google”,所以我不确定在这种情况下最佳做法是什么。一个关于正确程序的简短演练将非常有帮助。
【问题讨论】:
-
包括清楚解释的代码
-
该代码没有任何用处。这是一个最佳实践问题,可以针对任何语言提出。我的代码运行良好,但到目前为止我所拥有的与这些问题完全无关。
标签: ruby-on-rails postgresql oauth