Dynamics Business 365 Central API 和 Postman

Dynamics Business 365 Central API and 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 来实际查看错误消息。但我让它工作了,所以 Postman 现在可以检索令牌并将其存储以备后用。

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

我不知道为什么会这样。可能是应用配置错误,也可能是 URL 不正确,我真的不明白。

我正在尝试调用“https://api.businesscentral.dynamics.com/v2.0/production/api/v2.0”,我相信它应该给我一个 API 对我可用,但如上所述,401.

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

更新 1

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

Postman Auth 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

不过还是有些奇怪。如果我尝试使用指南文章中提到的请求获取公司“endpoint/companies”,我会按预期收到 CRONUS 公司的回复,但如果我随后尝试调用“endpoint/companies(cronus-company- id)/customers”来获取 CRONUS 的客户,然后我得到 401“未经授权”,“提供的凭据不正确”。如果我尝试获取 CRONUS 的详细信息,也会发生同样的情况。 我不明白为什么,因为令牌刚刚被证明有效...

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

解析token: