首页 > 解决方案 > Dynamics Business 365 Central API 和 Postman

问题描述

我确实很欣赏这样一个事实,即在我之前有很多人问过这类问题(也许是微软的原因?),但我无法通过阅读这些问题找到解决问题的方法.

我正在尝试从 Postman (AAD auth) 调用 Dynamics 365 BC API (v.2.0),并且我已尝试尽可能地遵循描述,尽管它们在某些地方似乎不同步。 https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-develop-connect-apps

我要授权和接收令牌的部分工作正常,尽管需要一些时间才能让它正确,而且我必须使用 Fiddler 才能真正看到错误消息。但我让它工作了,所以邮递员现在可以检索一个令牌并将其存储起来以备后用。

不起作用的部分是对 Dynamics BC API 的实际调用。当我尝试使用检索到的令牌调用 Dynamics BC API 时,我不断收到401“未经授权”、“提供的凭据不正确” 、错误。

我不知道为什么会这样。也许应用程序配置错误或者 URL 不正确,我真的不明白。

我正在尝试调用“https://api.businesscentral.dynamics.com/v2.0/production/api/v2.0”,我认为它应该给我一个可用的 API 列表,但如上所述, 401。

当我已经从 Azure 成功检索令牌时,这可能是什么原因?

更新 1

我正在探索 jwt 令牌并对这部分感到好奇,因为它可能是错误的,除非我误解了描述。它说如果令牌是由 v2.0 端点发出的,那么令牌的“iss”部分应该以“/v2.0”结尾,而这里似乎不是这种情况(见图)。

在此处输入图像描述

我使用的邮递员身份验证 URL 是:https ://login.microsoftonline.com/98...73/oauth2/v2.0/authorize

邮递员访问令牌 URL:https ://login.microsoftonline.com/98...73/oauth2/v2.0/token

所以也许这里有问题?

更新 2

好的,所以我将 Postman 中的范围更改为与您相同的范围,现在我收到提示,以我创建的名称授予对应用程序的访问权限,这很好。据我记得,指南文章中没有提到有关范围的内容,而 Postman 需要一个范围,所以我创建了一个范围并使用了它 - 显然这是不正确的,应该在该指南文章(Microsoft)中更新。

在此处输入图像描述

但是,当我尝试检索可用的 API 时,我仍然收到奇怪的响应。

{
    "error": {
        "code": "Internal_CompanyNotFound",
        "message": "The specified company ID, 98...73, does not exist.  CorrelationId:  434d...235d."
    }
}

更新 3

删除该错误消息,这是为了尝试检索公司,并且该请求可能有问题。

对可用 API 的请求现在有效 - 似乎整个问题都与指南文章未涵盖的所需范围有关。

感谢卡尔的帮助!:)

更新 4

不过还是有些奇怪。如果我尝试指南文章中提到的请求以获取公司“端点/公司”,我会按预期收到 CRONUS 公司的回复,但如果我随后尝试调用“端点/公司(cronus-company-id)/客户” " 为 CRONUS 获取客户,然后我得到401 "Unauthorized", "The credentials provided are wrong"。如果我尝试获取 CRONUS 的详细信息,也会发生同样的情况。我不明白为什么,因为令牌刚刚被证明有效......

标签: azure-active-directorypostmandynamics-365dynamics-business-central

解决方案


显然,您的令牌是错误的,并且您scope的设置不正确。你可以根据我的配置来配置你的邮递员。范围应设置为:https://api.businesscentral.dynamics.com/.default

在此处输入图像描述

解析token:</p>

在此处输入图像描述


推荐阅读