使用Web API在CRM中添加新记录

时间:2019-03-24 12:58:50

标签: javascript c# asp.net asp.net-mvc dynamics-crm

我正在尝试使用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);
      }
    });
  });
});

2 个答案:

答案 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