Я пытаюсь использовать 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
?