Rails omniauth Google - 如何更新个人资料数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails omniauth Google - 如何更新个人资料数据相关的知识,希望对你有一定的参考价值。
我正在使用omniauth通过Google对用户进行身份验证。当用户通过Google登录时,我会检查一个帐户是否已存在同一封电子邮件(如果有,我拒绝登录)。
当我创建新的用户模型时,我会给它命名,发送电子邮件,以及用户“图像”的URL。当用户更改Google上的设置时,我不确定如何动态更新数据库中的信息,包括更改其个人资料图片时的image_url。
这种情况的一个很好的例子是Stack Overflow;我和谷歌签约了。更改了我的个人资料图片(最近),我惊讶地发现我的旧Google图片仍然附加到我的SO个人资料中。也许Google需要时间来更改旧URL以表示新图像。我注意到Google的某些部分使用了我的新图像,其他部分继续使用我的旧图像。当然,这个问题与谷歌的个人资料图像机制没什么关系,我只是觉得这是一个很好的例子。
My questions are:
- 我是否应该这样做,还是应该让用户能够通过我的网站更改其详细信息,完全忽略他们的Google个人资料会发生什么?
- 如果我应该这样做,最好的方法是什么?检查每次登录都不理想,因为用户可能无法注销数天甚至数周。
- 我应该存储Google身份验证令牌吗?目前,我不是因为我不需要进行任何Google API调用 - 我只使用OAuth作为'uid'以确保它是登录的同一帐户(根本不使用该电子邮件)。
我不认为答案是“不存储用户信息,而是查询Google”,所以我不确定在这种情况下最佳做法是什么。简要介绍正确的程序将非常有帮助。
通常,oauth应用程序将使用端点/me.json
作为登录过程的一部分:在用户登录后,应用程序使用该新令牌立即查询其配置文件信息并更新数据。在您的情况下,我理解您在电子邮件已存在时忽略。您应该在那里添加一个新步骤,以更新本地记录(如果它已经存在)而不是纯粹忽略它。
换句话说,如果用户更改其个人资料照片,您的应用将不会自动得到通知。但是你总是可以使用他们的登录操作来获取最新的图像(或者在后台作业中使用他们的令牌,这个作业每隔n个时间运行一次,比如cron +,假设oauth作用域授权离线访问)
以上是关于Rails omniauth Google - 如何更新个人资料数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 3 中设置环境变量(设计 + Omniauth)
在 Rails 应用程序中使用 Omniauth-oauth2 刷新令牌
如何注销 Facebook - 在 Rails 应用程序中使用代码(Ruby on Rails Omniauth)
带有 Rails 5 的 Omniauth-twitter 停止工作! OAuth::Unauthorized 403 Forbidden