Отмените токен OAuth, используя chrome.identity и Rail's Doorkeeper - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь использовать OAuth2 и API chrome.identity для обработки авторизации между моим расширением Chrome и моим приложением Rails с помощью Doorkeeper.

Вход пользователя в систему работает нормально, однако у меня возникла проблема с отзывом токена пользователя и выходом из него.Проблема заключается в том, что для входа в систему я передаю маршрут GET Doorkeeper по умолчанию к 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.

Является ли решение для подражания аннулированию Doorkeeperфункция в GET-маршруте, или в Chrome есть способ принудительно выйти из системы через POST, используя chrome.identity.launchWebAuthFlow?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...