ruby-on-rails - 网站如何撤销/断开 OAuth 访问权限?

标签 ruby-on-rails oauth google-oauth omniauth

这可能是一个非常愚蠢的问题,但我一直没有找到答案,所以我希望有人能在这里帮助我。 :)

我有一个网站可以通过 OAuth 使用他们的 Google 或 LinkedIn 帐户对用户进行身份验证。我想为他们提供“断开”OAuth 作为登录源的选项(即停止使用他们的 Google 或 LinkedIn 帐户作为登录)。我现在所做的只是从我的数据库中删除 OAuth 数据。这似乎还不够,因为在用户下次尝试“连接”同一帐户时,系统不会提示他允许访问我的网站。它不显示此提示:

enter image description here

我知道用户可以在他的 Google 或 LinkedIn 帐户中撤销他这边的访问权限,但我这个网站有没有办法撤销访问权限?

感谢您的指导。 :)

如果有帮助,我正在使用 omniauth gem。

最佳答案

Google 提供了一种以编程方式撤销 token 的方法 here .

To programmatically revoke a token, your application makes a request to https://accounts.google.com/o/oauth2/revoke and includes the token as a parameter:

curl https://accounts.google.com/o/oauth2/revoke?token={token}

如果this thread仍然准确,LinkedIn 不提供执行此操作的方法。

There's no programmatic way to revoke an OAuth 2.0 access token at this time.

如果您想在将 token 从您的应用程序数据库中删除之前仔细检查它是否已被撤销,您可以尝试如下操作:

  1. 要求用户从每个相应应用程序的设置页面撤销 token
  2. 让用户确认他们已经这样做了
  3. 发出无害的请求(例如获取用户的个人资料信息)并期望它是未经授权的
  4. 如果请求未经授权, token 已成功撤销,您可以将其从数据库中删除

关于ruby-on-rails - 网站如何撤销/断开 OAuth 访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812104/

相关文章:

c# - 如何使用 C# 中的服务帐户登录 Google API - 无效凭据

angularjs - 必需的参数缺少 grant_type Google oauth2.0 AngularJS 和 Cordova inappbrowser

ruby-on-rails - Ruby on Rails form_for 选择带有类的字段

ruby-on-rails - 如何将两种不同的自定义注册表单与两种不同的设计和 rails 模型一起使用?

google-analytics - 分析 Google API 错误 403 : “User does not have any Google Analytics Account”

ruby-on-rails - Oauth 2.0 错误 领英

oauth - Google 帐户链接操作 - 根据我们的帐户链接政策,Google 帐户不能用作身份验证端点 URL

ruby-on-rails - Carrierwave、Fog、Amazon S3、Rails 4

ruby-on-rails - Rails RSpec 测试简单链接redirect_to 路径

c# - WebApi OWIN 相同 token 对两个不同的服务实例有效