我正在尝试实施 LTI 启动请求(http://www.imsglobal.org/LTI/v1p1/ltiIMGv1p1.html http://www.imsglobal.org/LTI/v1p1/ltiIMGv1p1.html)使用 Scala 和 Play 2.2.0。它基本上是一个带有表单参数和 OAuth 签名的 HTTP POST。
我可以成功签署 POST,但前提是未添加 POST 正文。 “OAuthCalculator”类在计算签名时似乎没有使用 POST 主体。
这不会计算出正确的签名。
val params = Map(
"lti_message_type" -> Seq("basic-lti-launch-request"),
"lti_version" -> Seq("LTI-1p0"),
"launch_presentation_return_url" -> Seq("http://lms.com"),
"resource_link_id" -> Seq("1023"))
WS.url("http://myservice:56024/widget")
.sign(OAuthCalculator(key, RequestToken(null, null)))
.post(params)
如果没有为 POST 提供正文,它会正确计算它们。
WS.url("http://myservice:56024/widget")
.sign(OAuthCalculator(key, RequestToken(null, null)))
.post("")
我故意传递一个空的请求令牌,因为我希望计算器仅执行 OAuth 签名。
是否有另一种添加 POST 正文的方法或另一种让库签署请求的方法?