Web API 快速入门示例

问题描述 投票:0回答:1

我正在致力于与 Dynamics 365 集成并遵循 Web API 示例 (C#)。虽然这有效,但示例有两个问题,我想了解如何处理。

首先,示例使用旧版本的

Microsoft.IdentityModel.Clients.ActiveDirectory
包,它解释说这是因为:

此示例依赖于无需单独的 Azure 登录对话框即可传递用户凭据的功能,而该库的 3.x 版本中不提供该功能。

其次,该示例使用来自 Microsoft 的硬编码 clientId:

// Azure Active Directory registered app clientid for Microsoft samples
string clientId = "51f81489-12ee-4a9e-aaae-a2591f45987d";

鉴于我使用的是 Office365 帐户,并且根本看不到 Azure 如何融入其中,那么实现与 Dynamics365 连接而不出现上述问题的最佳方法是什么?

c# dynamics-365
1个回答
1
投票

开始使用 C# Dynamics 365 扩展的一种快速方法是使用 NuGet (XrmTooling) 中提供的 SDK。这样,您就可以使用授权类型 ClientSecret连接字符串 与 ClientId 和 SecretKey 结合使用。这是使用 WhoAmIRequest 的代码示例,并且需要使用应用程序用户,这里是如何做到这一点

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

var urlMask = "RequireNewInstance=True;SkipDiscovery=True;AuthType=ClientSecret;LoginPrompt=Never;ClientSecret={0};ClientId={1};Url={2};AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;RedirectUri=app://58145b91-0c36-4500-8554-080854f2ac97/";
var fullUrl = string.Format(urlMask, clientSecret, clientId, d365Url);

var conn = new CrmServiceClient(fullUrl);
var _orgService = conn.OrganizationWebProxyClient ?? (IOrganizationService)conn.OrganizationServiceProxy;

WhoAmIRequest req = new WhoAmIRequest();
WhoAmIResponse resp = _orgService.Execute(req) as WhoAmIResponse;

Console.Write(resp.UserId);
© www.soinside.com 2019 - 2024. All rights reserved.