使用chrome.identity和Rail的Doorkeeper撤销OAuth令牌

时间:2018-12-05 22:05:06

标签: ruby-on-rails google-chrome-extension oauth-2.0 google-oauth doorkeeper

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

登录用户可以正常工作,但是我在撤消用户令牌并将其注销时遇到问题。问题是,对于登录,我将默认的Doorkeeper GET路由传递到chrome.identity.launchWebAuthFlow,但是对于注销,Doorkeeper希望向/oauth/revoke发送POST请求,但是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可以使用chrome.identity.launchWebAuthFlow通过POST强制注销?

0 个答案:

没有答案