我正在尝试使用Java脚本将记录添加到CRM,但得到:
401未经授权的错误。
我的问题是如何获取令牌并在JavaScript函数中使用它。
$(document).ready(function() {
$("#Save").click(function() {
var ProductDetails = new Object();
ProductDetails.ProductName = $("#txt_productName").val();
ProductDetails.ProductDetail = $("#txt_desc").val();
$.ajax({
url: "https://mycrm.dynamics.com/api/data/v9.1/Products",
type: "Post",
dataType: 'JSON',
data: ProductDetails,
contentType: 'application/x-www-form-urlencoded',
success: function(data) {
alert('Updated Successfully');
},
error: function(request, status, error) {
alert(request.status);
}
});
});
});
答案 0 :(得分:1)
您需要在Http Header中添加授权信息。这是使用JWT的示例。
$(document).ready(function() {
$("#Save").click(function() {
var ProductDetails = new Object();
ProductDetails.ProductName = $("#txt_productName").val();
ProductDetails.ProductDetail = $("#txt_desc").val();
$.ajax({
url: "https://mycrm.dynamics.com/api/data/v9.1/Products",
type: "Post",
headers: {
'Accept':'application/json',
'Content-Type':'application/json',
'Authorization':'Bearer your token here'
},
dataType: 'JSON',
data: ProductDetails,
contentType: 'application/x-www-form-urlencoded',
success: function(data) {
alert('Updated Successfully');
},
error: function(request, status, error) {
alert(request.status);
}
});
});
});
答案 1 :(得分:0)
您必须添加带有不记名令牌的标头,如下所示:
$.ajax({
(...)
headers: {
"Authorization": "Bearer " + token
},
(...)
为了获取令牌,您必须首先在与Dynamics 365实例相同的租户中在Azure Active Directory中注册应用程序。如果您需要详尽的分步指南,请选中此link。
在AAD中注册应用程序后,还必须添加一些代码以使用Azure进行身份验证并获取令牌。 ADAL.js为您完成了这项工作,但请记住,它会提示用户在Office 365弹出窗口中手动添加其用户名和密码。据我所知,这称为交互式身份验证。
有关完整的HTML + JS工作示例,请单击here。