我正在尝试在我们的D2L LMS测试环境系统中创建一个自定义窗口小部件,该窗口小部件将在课程主页中使用讲师用户配置文件图像和名称填充窗口小部件。有人告诉我,我可以使用Valence API来做到这一点,所以我阅读了Valence http://docs.valence.desire2learn.com/的所有文档。然后我在我的LMS中的Manage Extensibility管理工具中注册了我的小部件(即使我没有使用外部应用程序)。我还从https://github.com/Brightspace/valence-sdk-javascript/releases下载了客户端库javascript版本,进行了一些更改以添加我自己的API密钥和ID,并将它们上传到我的课程Manage Files 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>
然而,我的小部件显示Error 403 Forbidden并且系统冻结。然后,我拿出插入文件的脚本,它仍然显示错误403 Forbidden,但系统不再冻结。
我不确定我做错了什么,因为我没有在API中使用外部应用程序,我在LMS中,因为小部件是一个LMS工具,所以我很困惑为什么我不得不注册窗口小部件并获取API密钥和ID以及在这种情况下身份验证的工作方式。我在API测试工具中测试了我的API密钥和ID,它为这个whoamI调用'。
返回了结果我作为具有更高安全级别的管理员登录到LMS,仍然获得403 Forbidden。当我使用我的学生帐户登录LMS时也一样。
感谢您的帮助和关注。
答案 0 :(得分:0)
请参阅https://community.brightspace.com/devcop/f_technical/help_with_make_an_api_call_within_my_widget了解答案。
从链接:
此问题的答案取决于您的Brightspace版本。
如果您的版本是10.4.7或更高版本,则不需要使用Valence身份验证,因为Brightspace使用的cookie应该可以使用。
如果您的版本在10.4.7之前,那么您将需要创建一个Web应用程序,该应用程序可以从Widget到Brightspace代理相应的Valence请求。您可以在其中添加Valence身份验证(即,公开您正在使用的Valence API子集的Web应用程序,在生成经过身份验证的URL后将请求转发到Brightspace)。这是因为在10.4.7之前,Valence API使用不同的方法来验证传入的请求,即使对于Widgets也是如此。