如何使用访问令牌将数据发布到C#中的Dynamics CRM中

时间:2018-06-27 09:08:00

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

我需要将数据从MVC表单发布到我们的Dynamics CRM,我已经获得了获取访问令牌的功能设置,但是我不知道如何使用它将数据发送到CRM。我可以通过邮递员在CRM中张贴和创建记录,但是我不知道如何将Access Token和邮递员张贴在C#中结合起来。

获取访问令牌:

string organizationUrl = "https://myorgcrm.crm4.dynamics.com";
string appKey = "XXXXXXxxxXxXXXxXXXXXX+XXxxxxXXxxxXXxxxXXXXX=";
string aadInstance = "https://login.microsoftonline.com/";
string tenantID = "myorg.onmicrosoft.com";
string clientId = "XXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX";   

public string AuthenticateWithCRM()
{ 
    AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/common", false);

    ClientCredential clientcred = new ClientCredential(clientId, appKey);
    AuthenticationContext authenticationContext = new AuthenticationContext(aadInstance + tenantID);
    AuthenticationResult authenticationResult = authenticationContext.AcquireTokenAsync(organizationUrl, clientcred).Result;

    return authenticationResult.AccessToken;
}

这返回一个访问令牌,因为它返回一个令牌(我假设这是正确的),但是直到我确定如何尝试发送数据之前,我一直无法确定。

邮差。...

JSON:

{
    "org_accountnumber": '12345',
    "org_Individualid":
    {
        "firstname": "Luke",
        "lastname": "Skywalker"
    },
    "orgstuff@odata.bind":"/orgstuff_schemes(XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX)"
}

我使用在身份验证URL,访问令牌URL和客户端ID中填写的访问令牌来运行此程序,然后它根据我的工作窗口用户帐户运行。

1 个答案:

答案 0 :(得分:0)

对Dynamics CRM不太熟悉,但从我found on the MS DOCS的角度看,似乎很熟悉。

通常,当用户登录到您的应用程序或应用程序自举时,您通常会请求访问令牌。根据OAuth,您必须在任何请求中将accesstoken作为标头传递。为此,请使用C#

using (HttpClient httpClient = new HttpClient())
{
    httpClient.Timeout = new TimeSpan(0, 2, 0);  // 2 minutes
    httpClient.DefaultRequestHeaders.Authorization = 
        new AuthenticationHeaderValue("Bearer", result.AccessToken);