1

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

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)
4

2 回答 2

0

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

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

于 2018-09-11T05:55:04.067 回答
0

您必须使用如下组织 URI:(.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/',它是正确的,但你没有使用它。

于 2018-08-22T19:15:28.350 回答