ruby-on-rails - 使用 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
?
解决方案
推荐阅读
- react-native - 我想用 React Native 中的按钮移动屏幕
- python - 此错误中的 NavigableString 指的是什么,为什么会这样?
- javascript - 打开多个标签时如何隐藏推送通知 FCM?
- python - 如何在 tkinter 中添加图像
- flutter - 错误:未为类“对象”定义运算符“[]”
- java - SQLException:查询不返回结果
- json - 将具有 JSON 字段的选择结果转换为 JSON,并将该数据与 JSON_VALUE() 一起使用
- unity3d - 具有 MRTK 2.6.1 的 Hololens2 在设备睡眠后失去头部姿势
- python - 如何从我的 main.py 调用导航布局中的函数
- dax - 在 Power BI 中使用 DAX 计算运行平均值 - 逐行