Веб-API Dynamics 365 дает ошибку 401?

Я пробовал использовать Microsoft Dynamics 365 (v9.0) Web APis. Мне удалось сгенерировать токен доступа, но мой вызов api не работает. Я использую adal для Python

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)

person Atul K.    schedule 22.08.2018    source источник


Ответы (2)


Вы должны использовать 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/', но не использовали ее.

person Arun Vinoth    schedule 22.08.2018
comment
Тем не менее, он дает мне ‹Ответ 401› - person Atul K.; 23.08.2018
comment
@AtulK. Глупый вопрос. Вы зарегистрировали свой crmol в AAD и получили этот клиент и секрет? - person Arun Vinoth; 23.08.2018
comment
да. Я сделал. Фактически, я тоже получаю токен доступа. Но когда мне звонят, он выдает ошибку 401: Несанкционированный доступ. - person Atul K.; 23.08.2018
comment
@AtulK. ты нашел на это ответ. У меня такая же проблема. - person narcs; 31.10.2019

Дали ли вы согласие пользователю на требуемый ресурс? Перейдите по ссылке ниже и посмотрите в разделе «Запрос кода авторизации». Вам нужно будет добавить параметр «подсказка», указав в качестве значения «согласие». Затем Azure AD решит перенаправить вас на страницу согласия, если согласие еще не было предоставлено.

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

person Alessi    schedule 11.09.2018