如何为 Dataverse API 生成访问令牌
Posted
技术标签:
【中文标题】如何为 Dataverse API 生成访问令牌【英文标题】:How to generate access token for Dataverse APIs 【发布时间】:2022-01-18 07:57:00 【问题描述】:我需要使用 REST API 从 Dataverse 表中获取详细信息,为此我需要生成访问令牌以发送有效的授权标头。我已经完成了Use OAuth authentication with Microsoft Dataverse 和Register an app with Azure Active Directory 并按照步骤操作。现在要生成访问令牌,我使用带有https://login.microsoftonline.com/tenantId/oauth2/v2.0/token
端点的POST 方法,并将grant_type 作为client_credentials
,资源作为https://management.core.windows.net/
以及客户端ID 和客户端密码,内容类型为application/x-www-form-urlencoded
。但我收到 AADSTS901002: The 'resource' request parameter is not supported.
编辑
在 API 权限选项卡中,我添加了委派权限。
在身份验证选项卡中,我没有为流选择任何类型,我需要在此处更改吗?
另外请注意,在 Token Configuration 选项卡中尚未添加任何声明或组,并且 Expose API 选项卡没有添加范围和授权的客户端应用程序。如果我需要在此处进行任何更改,请告诉我。
更新
当我不传递资源参数并使用https://orgId.crm5.dyanamics.com/.default
连同client_id、client_secret 和grant_type 一起发送范围时,我能够获取访问令牌,但是当我使用此令牌通过https://orgId.crm5.dyanamics.com/api/data/v9.0/accounts
获取数据时,我我得到用户不是组织的成员
【问题讨论】:
【参考方案1】:错误AADSTS901002: The 'resource' request parameter is not supported表示请求中提供的资源不正确。
当您尝试为 Dataverse API 生成访问令牌时,资源应该如下:
https://admin.services.crm.dynamics.com/
【讨论】:
谢谢,我必须使用建议的资源值从邮递员那里生成访问令牌,但我收到了相同的消息。我是否需要将请求中的任何其他详细信息作为参数或标头传递? 你添加的范围是什么?您的应用注册是否具有 dataverse api 的 user_impersonation 委托权限? 您好 RamaraoAdapa-MT,以前我没有发送任何范围,但我尝试使用openid offline_access
并且得到相同的 *AADSTS901002:不支持“资源”请求参数。* 使用资源作为https://admin.services.crm.dynamics.com/
我还更新了问题,提供了有关配置的更多详细信息,目前,我确实添加了委派权限。如果需要任何更改,请告诉我。谢谢
您需要为 user_impersonation 权限授予管理员同意。同样在身份验证选项卡中,请检查访问令牌和 id 令牌。您无需为此应用注册添加任何范围以上是关于如何为 Dataverse API 生成访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Firebase Dynamic Link Analytics Rest API (NodeJS) 获取正确的访问令牌