Rails omniauth Google - 如何更新个人资料数据

问题描述 投票:0回答:1

我正在使用omniauth通过Google对用户进行身份验证。当用户通过Google登录时,我会检查一个帐户是否已存在同一封电子邮件(如果有,我拒绝登录)。

当我创建新的用户模型时,我会给它命名,发送电子邮件,以及用户“图像”的URL。当用户更改Google上的设置时,我不确定如何动态更新数据库中的信息,包括更改其个人资料图片时的image_url。

这种情况的一个很好的例子是Stack Overflow;我和谷歌签约了。更改了我的个人资料图片(最近),我惊讶地发现我的旧Google图片仍然附加到我的SO个人资料中。也许Google需要时间来更改旧URL以表示新图像。我注意到Google的某些部分使用了我的新图像,其他部分继续使用我的旧图像。当然,这个问题与谷歌的个人资料图像机制没什么关系,我只是觉得这是一个很好的例子。

My questions are:

  • 我是否应该这样做,还是应该让用户能够通过我的网站更改其详细信息,完全忽略他们的Google个人资料会发生什么?
  • 如果我应该这样做,最好的方法是什么?检查每次登录都不理想,因为用户可能无法注销数天甚至数周。
  • 我应该存储Google身份验证令牌吗?目前,我不是因为我不需要进行任何Google API调用 - 我只使用OAuth作为'uid'以确保它是登录的同一帐户(根本不使用该电子邮件)。

我不认为答案是“不存储用户信息,而是查询Google”,所以我不确定在这种情况下最佳做法是什么。简要介绍正确的程序将非常有帮助。

ruby-on-rails postgresql oauth
1个回答
0
投票

通常,oauth应用程序将使用端点/me.json作为登录过程的一部分:在用户登录后,应用程序使用该新令牌立即查询其配置文件信息并更新数据。在您的情况下,我理解您在电子邮件已存在时忽略。您应该在那里添加一个新步骤,以更新本地记录(如果它已经存在)而不是纯粹忽略它。

换句话说,如果用户更改其个人资料照片,您的应用将不会自动得到通知。但是你总是可以使用他们的登录操作来获取最新的图像(或者在后台作业中使用他们的令牌,这个作业每隔n个时间运行一次,比如cron +,假设oauth作用域授权离线访问)

© www.soinside.com 2019 - 2024. All rights reserved.