我正在尝试使用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强制注销?