OAuth LTI 签名无效

Eri*_*ric 5 oauth lti

我正在尝试使用 LTI 将 LMS (Canvas) 与我的第 3 方学习工具集成。作为该过程的一部分,我将获取 Canvas 发送给我的请求变量:

Array ( [oauth_consumer_key] => key
        [oauth_nonce] => s78gkWprnVJ6qp2UaCaEZ39WoYm91yOztiCBRhDx7s
        [oauth_signature] => l82UMpiOt62vTd7Eu4GzyVVxYk0=
        [oauth_signature_method] => HMAC-SHA1
        [oauth_timestamp] => 1367072335 [oauth_version] => 1.0 )
Run Code Online (Sandbox Code Playgroud)

并通过标头将它们发送到我的“request_token.php”脚本(取自谷歌的oAuth代码)。结果是无效签名。不过,我已经在本地测试了代码,当不从我的 LMS 中提取信息时,它似乎工作正常。我已经 var_dumped OAuthRequest 对象作为进一步的指示,表明 OAuthRequest 实际上正在使用正确的变量。

OAuthRequest Object
( [parameters:protected] =>
Array ( [oauth_consumer_key] => key
        [oauth_nonce] => s78gkWprnVJ6qp2UaCaEZ39WoYm91yOztiCBRhDx7s
        [oauth_signature] => l82UMpiOt62vTd7Eu4GzyVVxYk0=
        [oauth_signature_method] => HMAC-SHA1
        [oauth_timestamp] => 1367072335 [oauth_version] => 1.0 )
        [http_method:protected] => GET
        [http_url:protected] => http://www.itsmorethanatextbook.com:80/oauth/example/request_token.php?oauth_consumer_key=key&oauth_nonce=s78gkWprnVJ6qp2UaCaEZ39WoYm91yOztiCBRhDx7s&oauth_signature=l82UMpiOt62vTd7Eu4GzyVVxYk0=&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1367072335&oauth_version=1.0
        [base_string] => GET&http%3A%2F%2Fwww.itsmorethanatextbook.com%2Foauth%2Fexample%2Frequest_token.php&oauth_consumer_key%3Dkey%26oauth_nonce%3Ds78gkWprnVJ6qp2UaCaEZ39WoYm91yOztiCBRhDx7s%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1367072335%26oauth_version%3D1.0 )
Run Code Online (Sandbox Code Playgroud)

是否需要对 LTI 变量采取一些额外的步骤才能使其发挥作用?(我尝试对它们进行编码但无济于事)

小智 0

我建议仔细检查您在 Canvas 站点上的 LTI 安装。
我以前也遇到过类似的情况,是来自错误的公钥 url。