【问题标题】:Dynamics 365 Web API giving 401 error?Dynamics 365 Web API 给出 ​​401 错误?
【发布时间】:2018-08-22 13:47:31
【问题描述】:

我正在试用 Microsoft Dynamics 365 (v9.0) Web API。 我能够生成访问令牌,但我的 api 调用失败。 我正在为 python 使用adal

from adal import AuthenticationContext
import requests

api = 'https://xxxxxx.crm8.dynamics.com/api/data/v9.0/'

auth_context = AuthenticationContext('https://login.microsoftonline.com/xxxxxx.com')


token = auth_context.acquire_token_with_client_credentials(
    resource='https://xxxxxx.com/0d74ff2f-d7d2-46f4-a3c3-fb4f6d49aa51',
    client_id='6e859f06-0d88-413f-a3fe-1ae12cc7350d',
    client_secret='abigclientsecret')

print(token)

at = 'Bearer ' + token['accessToken']

headers = {'Authorization' : at,
"Content-Type" : "application/json; charset=utf-8",
'OData-MaxVersion' :'4.0',
'OData-Version' :'4.0',
'Accept' : 'application/json'}
response = requests.get("https://xxxxxx.api.crm8.dynamics.com/api/data/v9.0/contacts", headers=headers)
print(response)

【问题讨论】:

    标签: oauth-2.0 dynamics-crm microsoft-dynamics dynamics-365 dynamics-crm-webapi


    【解决方案1】:

    您必须使用如下组织 URI:(从您的 sn-p 中删除 .api.

    response = requests.get("https://xxxxxx.crm8.dynamics.com/api/data/v9.0/contacts", headers=headers)
    

    我看到你已经初始化了一个名为 api = 'https://xxxxxx.crm8.dynamics.com/api/data/v9.0/' 的变量,这是正确的,但你没有使用它。

    【讨论】:

    • 然而它给了我
    • @AtulK。愚蠢的问题。您是否在 AAD 中注册了您的 crmol 并获得了此客户端 ID 和密码?
    • 是的。我做到了。事实上,我也得到了访问令牌。但是当我接到电话时,它给出了错误 401:未经授权的访问。
    • @AtulK。你找到答案了吗?我遇到了完全相同的问题。
    【解决方案2】:

    您是否同意用户使用所需的资源? 请参阅下面的链接并在“请求授权码”下查看。 您将需要添加以 'consent' 作为值的 'prompt' 参数。 然后,如果尚未授予同意,Azure AD 将决定将您带到同意页面。

    https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-oauth-code

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 2020-01-10
      • 2019-02-06
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多