使用 GM_xmlhttpRequest 交换访问令牌的 Quire 授权代码

2024-04-08

这可能是一个愚蠢的问题,我已尝试遵循quire-api-博客 https://quire.io/blog/p/Create-Your-Quire-App-with-Quire-API.html但我仍然无法从 Tampermonkey javascript 用户脚本获取令牌。

GM_xmlhttpRequest 的仅供参考语法可在https://www.tampermonkey.net/documentation.php?ext=dhdg#GM_xmlhttpRequest https://www.tampermonkey.net/documentation.php?ext=dhdg#GM_xmlhttpRequest

我正在使用以下代码:

GM_xmlhttpRequest({
    method: "POST",
    url: "https://quire.io/oauth/token",
    data: JSON.stringify({
              grant_type: "authorization_code",
              code: "xxx",
              client_id: ":yyy",
              client_secret: "zzz"
          }),
    onload: function(r){
        console.log(r);
    }
});

这将在控制台中返回以下对象:

finalUrl: "https://quire.io/oauth/token"
​
readyState: 4
​
response: 
​
responseHeaders: "content-encoding: gzip\r\ncontent-type: text/plain; charset=utf-8\r\ndate: Sun, 13 Oct 2019 09:04:26 GMT\r\nserver: nginx/1.17.3\r\nset-cookie: DARTSESSID=7d20dcf1f0eae6ce0f69d9fe615e9ce5; Path=/; HttpOnly\r\nx-content-type-options: nosniff\r\nx-firefox-spdy: h2\r\nx-frame-options: SAMEORIGIN\r\nx-xss-protection: 1; mode=block\r\n"
​
responseText: 
​
responseXML: 
​
status: 400
​
statusText: "Bad Request"

知道出了什么问题吗?

预先感谢您的友好答复。

Rafaël


你需要小心content-type您的要求。不同的 XHR API 使用不同的默认值。

The 访问令牌请求的 OAUTH2 规范 https://www.rfc-editor.org/rfc/rfc6749#section-4.1.3将 Content-Type 描述为application/x-www-form-urlencoded.

虽然 GreaseMonkey 默认使用 JSON 发送请求,但可以通过设置来更改内容类型 https://wiki.greasespot.net/GM.xmlHttpRequest#POST_request标头并使用“x-www-form-urlencoded”将数据编码为字符串

GM.xmlHttpRequest({
  method: "POST",
  url: "https://quire.io/oauth/token",
  data: "grant_type=authorization_code&code=xxx&client_id=yyy&client_secret=zzz",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded"
  },

jquery.ajax() https://api.jquery.com/JQuery.ajax/这会自动将默认内容类型设置为 application/x-www-form-urlencoded

重要附注:您对 $.ajax() 的使用表明了在浏览器中的使用情况。如果这是真的那就不要这样做!将您的 client_secret 暴露给浏览器内运行的应用程序将允许任何人以您的查询身份进行身份验证并使用grant_type: client_authentication。截至目前,Quire API 要求您运行专用服务器,您必须从中执行访问令牌请求,以避免暴露client_secret。如果您在服务器端使用 jquery,那么就可以了。

有开放的Issue#8 https://github.com/quire-api/quire-api/issues/8还支持客户端授权代码流,而不使用 client_secret(适合来自 SPA 或浏览器扩展)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 GM_xmlhttpRequest 交换访问令牌的 Quire 授权代码 的相关文章

  • 自动调整Google网站嵌入代码的高度(html)

    我正在使用 Google 协作平台嵌入 HTML 代码 将代码粘贴到 从网络嵌入 窗口中 输出的长度是可变的 我希望有一种方法可以动态调整父级的高度iframeGoogle 协作平台用于托管我的 HTML 我知道我可以使用 Google 协
  • 在 JavaScript 中生成 RSA 密钥对

    我最近发现了这个 RSA JavaScript 库 http www ohdave com rsa http www ohdave com rsa 但是 它要求预先生成密钥 这是我的问题 问题 我想在 JavaScript 中生成 RSA
  • 跨域XMLHttp请求

    这是我的情况 我有一台 Web 服务器机器 一台客户端机器和第三台运行一些侦听 XMLHttpRequest 的程序的机器 客户端从客户端计算机访问网络服务器 进行一些更改 然后单击 保存 此时 数据被发送回网络服务器和第三台机器 所有这些
  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • 仅单击 div 内部

    我正在为一个小网站制作教程 我只想让教程气泡可点击 因此 当我们尝试单击气泡之外的某些内容时 什么也不会发生 换句话说 我希望我的 html 不可点击 而 tutorial bubble 可点击 尝试这个 jQuery function h
  • 创建一个简单的 10 秒倒计时

    我想要一行这样写的 Your download will begin in 10 9 8 etc Beginning on page load seconds 我已经设置了 10 秒下载文本 并且我还查看了其他 stackoverflow
  • 如何防止 gulp-notify 破坏 Windows 中的 gulp-watch?

    我正在使用吞咽通知 https www npmjs org package gulp notify插入 这是我如何在 gulpfile js 中实现它的示例 您可以看到我也在使用 gutil 和 livereload 我不知道它们是否发挥任
  • 打开 md-calendar 时滚动到当前日期

    目前正在构建一个使用 Angular Material 的应用程序 我们需要一个 md calendar 组件 我们想要自定义按钮样式和内容 因此不使用普通的 md datepicker 问题是 当 md calender 打开时 滚动位置
  • 以一定时间间隔连续重复运行 JavaScript 函数

    这是我的第一个问题 希望您尽快回答 我想要代码连续重复一个函数 我尝试了一些代码 但没有成功 我尝试了这段代码 我想在一段时间后重复这个功能 我努力了setInterval and setTimeout 但是 我还没有收到结果 这将重复该任
  • console.log() 显示同一对象属性的矛盾值

    我想我可能要疯了 我使用 console log 来查看对象的状态 然后在下一行对同一对象的特定属性执行 console log 并为每个属性获取不同的值 我正在使用的代码是 console log this pictures Items
  • 在 React Navigation 中将 props 传递给自定义抽屉导航器

    在反应导航抽屉菜单中 我想显示用户名 John Doe 它处于我的主要组件的状态 Router 我怎样才能将自定义抽屉内容组件传递给它 额外信息 我从 AsyncStorage 中获取此名称 组件已挂载 这是我的代码 export defa
  • 如何在 ASP.NET MVC 3 的 Razor 视图中编码嵌入的 javascript?

    如何在以下上下文中正确编码 JavaScript 我的 JSON 对象中的值是由应用程序管理员设置的 因此我假设它们需要正确编码 对于 HTML 和 JavaScript 都是如此 我在用着System Web Script Seriali
  • Knockout.js 安全绑定

    我想使用带有淘汰赛的安全绑定 为此我使用敲除安全绑定 js https github com brianmhunt knockout secure binding 谁能解释一下为什么下面的代码不起作用 它会抛出一个错误 未捕获 淘汰 安全
  • JavaScript:测试与执行

    我想知道检查字符串 例如邮件 密码等 的最佳方法是什么 i exec a vs i test a exec返回值 test true test 1 way var mail req body mail if check mail exec
  • MongoDB中如何通过引用字段进行查询?

    我有两个 Mongo 模式 User id ObjectId name String country ObjectId Reference to schema Country Country id ObjectId name String
  • 强制输入数字小数位

    我想强制
  • Flowtype 属性“msg”缺失为 null 或未定义

    我发现 Flow 很难用 我明白那个Array find可以返回或未定义 因此 通过阅读以下内容 github Array find on Array 引发 https github com facebook flow issues 351
  • 无法使用 HTML 设置未定义 jQuery UI 自动完成的属性“_renderItem”

    我使用以下代码将 jQuery UI 自动完成项呈现为 HTML 这些项目在自动完成控件中正确呈现 但我不断收到此 JavaScript 错误并且无法移动过去 Firefox 无法转换 JavaScript 参数 Chrome 无法设置未定

随机推荐

  • 迭代器的无限产量

    我正在尝试学习一些红宝石 想象一下 我正在循环并执行一个长时间运行的过程 在这个过程中 我希望获得一个旋转器 只要需要就可以 所以我可以这样做 a aNow 0 skip setup a big loop print a aNow aNow
  • 在 beautiful soup 中使用 lambda 函数

    尝试匹配包含某些文本的链接 我正在做 links soup find all a href lambda x org in x 但这会引发 TypeError argument of type NoneType is not iterabl
  • 如何设计一个同时安全的多用户 Ajax Web 应用程序

    我有一个网页 显示来自服务器的大量数据 通信是通过ajax完成的 每次用户交互并更改此数据 假设用户 A 重命名某些内容 时 它都会告诉服务器执行该操作 然后服务器返回新更改的数据 如果用户 B 同时访问该页面并创建一个新的数据对象 它将再
  • 添加依赖项和库 .jar 后无法解析 json import Intellij

    将在线源中的 json lib 2 4 jdk15 jar 添加到项目依赖项后 我似乎无法解决此问题 提供的屏幕截图显示了我正在做的事情的演练 是的 我多次尝试过 使缓存无效并重新启动 The error 这是我的项目结构 cmd 或 文件
  • 如果字符串中间出现空字符怎么办?

    我知道字符串的结尾由空字符表示 但我无法理解以下代码的输出 include
  • Google Analytics - 记录出站链接 - 打开新窗口

    我用过以下通过谷歌分析记录出站链接 是否可以在新窗口中打开链接 a href a
  • netty DefaultChannelPipeline 异常捕获

    不幸的是 我不明白 netty 服务器的输出 BUILD SUCCESSFUL Total time 3 seconds Jul 27 2014 2 04 44 AM io netty handler logging LoggingHand
  • SQLite 数据库的大小有限制吗?

    我读过他们的限制常见问题解答 他们谈论了除整个数据库的限制之外的许多限制 这很容易从实施限制 http www sqlite org limits html page SQLite 数据库文件按页面组织 每个页面的大小是 512 和 SQL
  • 找到 nlogn 算法的下界

    原来的问题在这里讨论 在 O n log n 时间内找到特殊点 k 的算法 https stackoverflow com questions 7626813 algorithm to find special point k in on
  • LISP 中的变量和符号有什么区别?

    从范围上来说 内存中的实际实现 语法 例如 if let a 1 a 是变量还是符号 约尔格的回答指出了正确的方向 让我补充一点 我将讨论与 Common Lisp 类似的 Lisp 作为数据结构的符号 符号是 Lisp 中真实的数据结构
  • 如何在 scikit-learn 下绘制拟合高斯混合模型的概率密度函数?

    我正在努力完成一项相当简单的任务 我有一个浮点向量 我想将其拟合为具有两个高斯核的高斯混合模型 from sklearn mixture import GMM gmm GMM n components 2 gmm fit values va
  • 如何获取进程的输出并设置超时?

    设置超时值时如何获取进程的输出 我目前正在使用 Apache Commons IO utils 从进程的标准输出和错误输出创建字符串 下面的代码 带注释 适用于终止的进程 但是 如果进程不终止 主线程也不会终止 如果我取消注释掉注释掉的代码
  • 服务器推送:彗星 vs 猿?

    我读过一些关于彗星和 APE 的内容 哪一个更好 我希望用户看到其他用户更新的内容 就像谷歌波一样 而在comet中 有2个版本 iframe vs 传统的ajax 有什么区别 哪个更好 我不太明白 Thanks Comet 是一组可用于开
  • 将 Mac 二进制文件加载为动态库

    我正在使用没有源代码的二进制可执行文件进行一些逆向工程 在 Windows 上 我可以做的是使用 LoadLibrary 加载可执行文件 EXE 就像它是 DLL 文件一样 如果加载的文件不可重定位 我可以简单地重新定位加载器代码 为其他模
  • 正则表达式检查字符串是否仅包含字母数字字符和空格 - javascript

    这是我到目前为止所拥有的 function checkTitle reg w a reg test title val console log a 到目前为止 在我的测试中 它捕获了所有特殊字符 除了 我如何捕获所有特殊字符 包括 在当前函
  • numpy结构化数组添加记录

    我有一个像这样的结构化数组 a np array 0 1 2 10 11 12 dtype PositionX
  • 调用notifyDataSetChanged时android listview顺序发生变化

    全部 当我使用notifyDataSetChanged 时 列表视图显示顺序将发生变化 像这样 3 2 1 当前活动创建时 但是当我更改数据时 这将是 1 2 3 我不想改变顺序 我不明白为什么会发生这种情况 这是我的适配器类中的一段代码
  • 是否有与shared_from_this等效的weak_ptr?

    我有一堂我知道的课会一直被拥有者std shared ptr 然而路过shared ptr甚至weak ptr不需要所有权或生命周期保证的函数和方法会产生不必要的开销 为了解决这个问题 我经常将原始指针传递给函数 该类本身继承自std en
  • Expo / React-Native,有没有办法在设备/模拟器上测试运行独立的 iOS 应用程序?

    我正在使用 Expo 通过 React Native 编写我的应用程序 我可以在 Android 设备上测试我的应用程序 从 Expo 客户端应用程序运行它们 或者构建 APK 并将其作为独立运行 在 iOS 上 我可以从 Expo 客户端
  • 使用 GM_xmlhttpRequest 交换访问令牌的 Quire 授权代码

    这可能是一个愚蠢的问题 我已尝试遵循quire api 博客 https quire io blog p Create Your Quire App with Quire API html但我仍然无法从 Tampermonkey javas