首页 > 解决方案 > 使用 chrome.identity 和 Rail 的 Doorkeeper 撤销 OAuth 令牌

问题描述

我正在尝试使用 OAuth2 和 chrome.identity API 来处理我的 Chrome 扩展程序和使用 Doorkeeper 的 Rails 应用程序之间的授权。

登录用户工作正常,但是我在撤销用户令牌并将其注销时遇到问题。问题是,对于登录,我将默认的 Doorkeeper GET 路由传递给chrome.identity.launchWebAuthFlow,但对于注销 Doorkeeper 期望 POST 请求,/oauth/revoke但 chrome.identity 似乎只适用于 GET。

这是一个基本示例 -

var clientId = "abc123";
var clientSecret = "xxxxxx";
var redirectUri = chrome.identity.getRedirectURL('provider_cb');

var login_options = {
  'interactive': true,
  'url': 'http://localhost:3000/oauth/authorize' + 
         '?response_type=token' +
         '&client_id=' + clientId +
         '&client_secret=' + clientSecret + 
         '&redirect_uri=' + encodeURIComponent(redirectUri)
}

chrome.identity.launchWebAuthFlow(login_options, function(redirectUri) {
  var token = redirectUri.match(/(?<=access_token=)([a-zA-Z0-9]*)(?=[\?|&|\=])/)[0];


  var logout_options = {
    'interactive': false,
    'url': 'http://localhost:3000/oauth/revoke' + 
           '?response_type=code' +
           '&client_id=' + clientId +
           '&client_secret=' + clientSecret +
           '&token=' + token +
           '&redirect_uri=' + encodeURIComponent(redirectUri)
  }

  chrome.identity.launchWebAuthFlow(logout_options, function (redirectUrl) {

  });

});

在注销时我得到这个 -

Unchecked runtime.lastError while running identity.launchWebAuthFlow: Authorization page could not be loaded.

是在 GET 路由中模仿 Doorkeeper 的撤销功能的解决方案,还是 Chrome 有办法通过 POST 强制注销chrome.identity.launchWebAuthFlow

标签: ruby-on-railsgoogle-chrome-extensionoauth-2.0google-oauthdoorkeeper

解决方案


推荐阅读