0

我正在尝试在我们的 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 时也是如此。

感谢您的帮助和关注。

4

1 回答 1

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 应用程序,该应用程序可以将适当的 Valence 请求从您的 Widget 代理到 Brightspace。您可以在其中添加 Valence 身份验证(即,公开您正在使用的 Valence API 子集的 Web 应用程序,在生成经过身份验证的 URL 后将请求转发到 Brightspace)。这是因为在 10.4.7 之前,Valence API 使用不同的方法来验证传入请求,即使是小部件也是如此。

于 2015-03-18T19:29:41.200 回答