Google OAuth:在用户退出Google时注销我的用户

时间:2013-09-25 14:02:15

标签: ruby-on-rails oauth devise google-oauth

我有一个Rails应用程序,它使用带有Google OAuth gem的Devise来让Google用户为我的应用程序认证自己。

我对OAuth的理解是,我们接受一个受信任的网站(Google)的用户是他们所说的用户:在此之后,用户登录其Google帐户的事实应与我们的网站无关。但是,我们希望将用户的登录信息与他们在Google上的登录状态联系起来:如果他们退出Google,我想将其从我们的应用中注销。

在网上搜索解决方案时,我提出了相反的问题:如何在用户使用我们的应用时将用户退出Google?太疯狂了。

理想情况下,Google会提供一个回调API,以便在用户注销时通知我的应用程序。我还看到another hacky solution允许您确定用户是否已登录任何Google帐户,但我更喜欢更准确的内容(特定用户与任何用户)。

我还看到了Google的Contacts API可用于确定状态的提示。

更新

我在过去一周继续对此进行一些研究,我将在此发表我的研究结果。查看有关OAuth2流程的Google文档,似乎有两个相似且不同的设置:

  1. OAuth2 for Web Servers
  2. OAuth2 for Login
  3. 我用来将人们记录到我的服务中的Devise策略宝石似乎采用了第一个。但是,第二种技术使用相同的端点并且具有几乎所有相同的参数,并且doc指出第一种技术也适用于此。

    但是,我发现的一种可能性是Login(第二个)进程有一个“prompt”参数,它接受“none”值。设置此项后,文档会说如果用户已经登录,则auth请求将立即返回错误。结合“login_hint”参数,我可以提供用户的电子邮件地址,这将是解决我的问题的明确途径。

    BUT。使用第二种技术,无论我是否实际登录,授权请求总是返回立即错误。我想知道这是否与我通过第一种技术登录的事实有关?为了正确测试这一点,我必须将我的身份验证系统强化并用第二种技术替换它。

0 个答案:

没有答案