使用应用程序客户端凭证访问 Business Central 的图形 API

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

如何使用应用程序客户端凭据连接到 Microsoft Graph Beta 版本中的新 Business Central API(即使用服务应用程序使用客户端密钥进行连接)?

我已经设置了具有管理员权限的应用程序注册:

以及与 Microsoft Entra 应用卡上的 Business Central 中的上述应用程序注册关联的客户端 ID 所需的权限:

我已经使用 PowerShell 脚本测试了所有这些工作,该脚本调用“Get-MsalToken”以将客户端秘密令牌获取到范围“https://api.businesscentral.dynamics.com/.default”,然后调用“Invoke-RestMethod” ” 获取“https://api.businesscentral.dynamics.com/v2.0/$environment/api/v2.0/XXX”,并添加“Bearer [AccessToken]”标头。我可以在这里调用我喜欢的任何 API,一切都很好。

但是,当使用带有以下 VB.Net 代码的 Graph Beta API 时:

Dim options = New ClientSecretCredentialOptions With {   
    .AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
}
Dim creds As New ClientSecretCredential(_DomainName, _ClientID, _ClientSecret, options)
Dim GraphServiceClient = New GraphServiceClient(creds, {"https://api.businesscentral.dynamics.com/.default"})
Dim Companies = Await GraphServiceClient.Financials.Companies.GetAsync

我获得了在我看来合适的不记名代币:

但该代码片段中的最后一行会导致以下异常:“Microsoft.Graph.Beta.Models.ODataErrors.ODataError:访问令牌验证失败。无效受众。”。

我还尝试了使用默认“https://graph.microsoft.com/.default”图形范围的相同代码,但返回以下异常:“Microsoft.Graph.Beta.Models.ODataErrors.ODataError:服务器已拒绝客户凭据。”。

我也尝试过设置各种基本 Url,但我无法让它工作 - 它们要么导致与上面相同的错误,要么我得到:“Microsoft.Graph.Beta.Models.ODataErrors.ODataError:请求数据无效.”.

有人可以指出我做错了什么的正确方向吗?

谢谢, 加雷斯

vb.net microsoft-graph-api azure-ad-msal dynamics-business-central businesscentral
1个回答
0
投票

嗨,我认为要获取公司,您应该使用此图形 api 进行业务中心。 https://learn.microsoft.com/en-us/graph/api/dynamics-companies-get?view=graph-rest-beta 您也可以事先通过邮递员或其他工具进行测试。 https://learn.microsoft.com/en-us/graph/use-postman 我希望它对你有帮助 BR GR

© www.soinside.com 2019 - 2024. All rights reserved.