我正在尝试在我们的 D2L LMS 测试环境系统中创建一个自定义小部件,该小部件将在课程主页中使用讲师用户个人资料图像和名称填充该小部件。我被告知我可以使用 Valence API 来做到这一点,所以我阅读了 Valence http://docs.valence.desire2learn.com/上的所有文档。然后我在我的 LMS 的管理可扩展性管理工具中注册了我的小部件(即使我没有使用外部应用程序)。我还从https://github.com/Brightspace/valence-sdk-javascript/releases下载了客户端库 javascript 版本,进行了一些更改以添加我自己的 API 密钥和 ID,并将它们上传到我的课程管理文件 valenceJS 文件夹中。
在我的小部件中,我试图通过添加以下代码来使用 whoami 调用来测试 API 调用:
<div style="width: 250px; max-width: 250px; overflow: hidden;">
<script type="text/javascript">// <![CDATA[
if (typeof jQuery == 'undefined'){
document.write('<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"><\/script>');
}
// ]]></script>
<script type="text/javascript" src="https://learntest.<mysite>/{OrgUnitPath}/valenceJS/valence.js"> </script>
<script type="text/javascript" src="https://learntest..<mysite>/{OrgUnitPath}/valenceJS/sha.js"> </script>
<script type="text/javascript" src="https://learntest..<mysite>/{OrgUnitPath}/valenceJS/sample1.js"></script>
<script type="text/javascript" src="https://learntest..<mysite>/{OrgUnitPath}/valenceJS/server2.js"> </script>
<script type="text/javascript" src="https://learntest..<mysite>/{OrgUnitPath}/valenceJS/jquery.jsonp -2.2.0.min.js"></script>
<script type="text/javascript">// <![CDATA[
$(document).ready( function () {
$('#iInfo').load('/d2l/api/lp/1.0/users/whoamI', function(responseTxt, statusTxt, xhr){
if(statusTxt == "success")
$('#error').text("API loaded successfully!");
if(statusTxt == "error")
$('#error').text("Error: " + xhr.status + ": " + xhr.statusText);
});
});
// ]]></script>
<div id="iInfo" style="padding: 0 10px 10px 10px;"></div>
<p id="error" style="color: red;"></p>
</div>
但是,我的小部件显示错误 403 Forbidden 并且系统冻结。然后,我取出插入文件的脚本,它仍然显示错误 403 Forbidden,但系统不再冻结。
我不确定我做错了什么,因为我没有在 API 中使用外部应用程序,我在 LMS 中,因为小部件是 LMS 工具,所以我很困惑为什么我必须注册小部件并获取 API 密钥和 ID 以及在这种情况下身份验证的工作方式。我在 API 测试工具中测试了我的 API 密钥和 ID,它可以为这个 whoami call '.
我以具有更高安全级别的管理员身份登录 LMS,但仍然收到 403 Forbidden。当我使用我的学生帐户登录 LMS 时也是如此。
感谢您的帮助和关注。