使用 pecl oauth 为 LTI Outcomes 服务构建主体签名的 oauth xml 请求

2023-12-23

我正在使用 pecl oAuth 库,是否可以构建一个如下所示的正文签名的 oauth 请求:

POST http://www.imsglobal.org/developers/BLTI/service_handle.php HTTP/1.0
Host: 127.0.0.1:80
Content-Length: 757
Authorization: OAuth realm="",oauth_version="1.0",
oauth_nonce="29f90c047a44b2ece73d00a09364d49b",
oauth_timestamp="1313350943",oauth_consumer_key="lmsng.school.edu",
oauth_body_hash="v%2BxFnmDSHV%2Fj29qhxLwkFILrtPo%3D",
oauth_signature_method="HMAC-SHA1",
oauth_signature="8auRpRdPY2KRXUrOyz3HKCs92y8%3D"
Content-type: application/xml
<?xml version = "1.0" encoding = "UTF-8"?>
... more xml data ...

我正在尝试使用 IMS Global LTI 标准接口与 Instruct 的 Canvas LMS 进行通信。这结果服务 http://www.imsglobal.org/lti/v1p1pd/ltiIMGv1p1pd.html#_Toc309649691让您可以使用以下方式将分数发送回 LMS:oauth 签名的 xml 消息 http://www.imsglobal.org/lti/v1p1pd/ltiIMGv1p1pd.html#_Toc309649688


事实证明,pecl oAuth 目前不支持 oaut_body_hash。

我最终使用了这个谷歌代码存储库中的 oAuth 库http://code.google.com/p/oauth/ http://code.google.com/p/oauth/计算身体有我自己:

$bodyHash = base64_encode(sha1($body, TRUE)); // build oauth_body_hash
$consumer = new \OAuthConsumer($key, $secret);
$request = \OAuthRequest::from_consumer_and_token($consumer, '', 'POST', $endpoint, array('oauth_body_hash' => $bodyHash) );
$request->sign_request(new \OAuthSignatureMethod_HMAC_SHA1(), $consumer, '');
$header = $request->to_header() . "\r\nContent-Type: application/xml\r\n"; // add content type header
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pecl oauth 为 LTI Outcomes 服务构建主体签名的 oauth xml 请求 的相关文章

随机推荐

  • jQuery UI 对话框关闭时刷新父页面

    因此 每次关闭 jQuery UI 中的特定对话框时 我都希望刷新父页面 我怎样才能做到这一点 jQuery 代码 document ready function var dlg createTeam dialog title Create
  • 在类构造函数中实例化供应商类

    在我的 CakePHP 2 应用程序中 我有这样的供应商 我需要在我的控制器类中创建此供应商类的实例 所以我将在控制器的不同功能中使用该实例 App import Vendor fancyVendor array file gt fancy
  • Emacs 中的文本转语音

    我不是瞎子 我只是想有一种方法让我的 Windows 机器大声读取缓冲区的内容 以下是基本要求 读取任何英文文本缓冲区 随时暂停阅读并随时恢复 而不是当有人走进我的办公室时等待几分钟等待大缓冲区完成 调整播放时的读回速度 突出显示当前正在阅
  • 特征:矩阵到四元数和后面有不同的结果

    我使用 Eigen 库将矩阵转换为四元数 但是当我将其中一个矩阵转换为四元数并将其烧回时 它变成了另一个矩阵 即单位矩阵 我使用的旋转矩阵是从变换矩阵分解而来的 Eigen Matrix3f R3d R topLeftCorner lt 3
  • 如何使用 WPF 中的资源图标?

    我有一个作为资源嵌入的 ico 文件 构建操作设置为资源 我正在尝试创建一个 NotifyIcon 如何引用我的图标 notifyIcon new NotifyIcon notifyIcon Icon my icon file is cal
  • 理解php中的浮点数

    我知道这些问题可能会被很多人问到 但从我的阅读和测试来看 它让我有点困惑 而且我所做的很多阅读让我更加困惑 因为它非常复杂 有些人似乎对简单的比较有问题 但我自己没有问题 例如 num1 27 64 num2 27 64 if num1 n
  • 重新部署 JRebel 的替代方案 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 JRebel 允许重新部署新编译的代码 而无需重新启动应用程序 我想知道是否有任何替代方案 免费 这FAQ http zeroturnar
  • angularjs中的transformRequest是什么

    我有一个代码 transformRequest function obj var str for var p in obj str push encodeURIComponent p encodeURIComponent obj p ret
  • partykit:将终端节点箱线图更改为显示平均值和标准差的条形图

    我在 R 中创建了一个回归树 这是代码 tree lt rpart y method anova minsplit 20 minbucket 20 maxdepth 3 data foo plot as party tree termina
  • 使用 CUPS 或其他框架从 iOS/iPad 打印到 Epson TM-T88V 收据打印机

    有谁知道如何获得CUPS运行于iOS 我们正在尝试打印到网络Epson收据打印机 TM T88V 从 iPad 使用CUPS或其他方法 但我们在让 CUPS 在 iOS 上运行时遇到了障碍 我知道这是可以做到的 因为 iPad 应用程序已经
  • Google Maps Android API v2 - 恢复地图状态

    我正在使用 Google Maps Android API v2 构建一个非常简单的地图应用程序 正如预期的那样 当用户离开然后返回应用程序时 他们在位置 缩放等方面所做的任何更改都会随着 Activity 被销毁并重新创建而丢失 我知道我
  • 使用Python将数据写入雪花

    我们可以不使用Python的Snowflake内部阶段直接将数据写入雪花表吗 先在stage中写入 然后对其进行转换 然后将其加载到表中 这似乎是辅助任务 是否可以像RDBMS中的JDBC连接一样一步完成 将数据加载到 Snowflake
  • 带默认参数的 kotlin 重载方法

    这是场景 我得到了以下两种方法 fun foo p1 Int p2 String null fun foo p1 Int p2 Int 0 具体方法如何参考foo 1 如果调用者只有一个参数 则这是一个错误 foo 1 error 错误 Y
  • 无需重启服务器即可查看代码更改

    我们使用 Visual Studio Code 和 DNX 如下所示 启动 Web 服务器的命令行 dnx web 项目 json gt 命令 web Microsoft AspNet Hosting server Microsoft As
  • 安装失败,并显示消息无法使用“cmd package install-create -r -t -S 1647504”创建安装会话

    我在尝试通过 android studio 3 4 1 运行 apk 时收到错误消息 安装失败 并显示消息无法使用 cmd package install create r t S 1647504 创建安装会话 通过卸载现有版本的 apk
  • 我应该在 ssh 公钥中使用我的个人电子邮件吗?

    阅读 Github 的生成 SSH 密钥 https help github com articles generating ssh keys 教程 我在第 2 步 生成新的 SSH 密钥 https help github com art
  • 为什么 python 模块可以在 shell 中工作,但不能在脚本中工作?

    我正在尝试制作两个程序 我想要一台打印我居住城市的当前天气 而我想要另一台从在线帐户获取数据并将其返回 对于这些脚本 我导入 yweather 模块和 requests 模块 当我将它们导入 shell 时没有问题 但是当我运行脚本时它显示
  • 代码顺序和性能

    我想找到哪个更快 结构与数组 因此 我编写了一段 GO 代码 其中将 4 个 int 值 1 2 3 和 4 写入结构体的成员 然后写入长度为 4 的数组 我试图找出写入所需的时间 Case1 首先 我将值写入结构体 然后写入数组 在这里我
  • 为什么顺风找不到我的动态类?

    所以我尝试根据对象数组动态加载类 div item name div 我检查了浏览器上的元素面板 类属性加载正确 但 css 没有 为什么会这样 任何帮助将不胜感激 Tailwind 生成一个仅包含项目中使用的类的 CSS 文件 它无法识别
  • 使用 pecl oauth 为 LTI Outcomes 服务构建主体签名的 oauth xml 请求

    我正在使用 pecl oAuth 库 是否可以构建一个如下所示的正文签名的 oauth 请求 POST http www imsglobal org developers BLTI service handle php HTTP 1 0 H