Я пытаюсь создать приложение, которое делает запросы к API-интерфейсу Dynamics CRM с помощью python с помощью urllib2. До сих пор я могу войти в пользователя с Azure приложения, сделав запрос на запись к https://login.microsoftonline.com/common/oauth2/authorize затем извлеченной authorization_code я могу получить access_token, refresh_token и другие с urllib2Выполнение запроса к API-интерфейсу Dynamics CRM
url = 'https://login.microsoftonline.com/common/oauth2/token'
post_fields = {'grant_type': 'authorization_code',
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'redirect_uri': REDIRECT_URI,
'resource': 'https://graph.microsoft.com',
'code': code}
request = Request(url, urlencode(post_fields).encode())
resp = urlopen(request).read().decode()
resp = json.loads(resp)
refresh_token = resp['refresh_token']
id_token = resp['id_token']
id_token = jwt.decode(id_token,verify=False)
access_token = resp['access_token']
Затем я попытался сделать еще один пост запросить с помощью access_token, но не повезло. я получаю:
Ошибка HTTP 401: Несанкционированный
Подобно тому, как тест, который я сделать пост непосредственно .dynamics.com/API/данных/v8.1/приводит следующим образом:
url = 'https://<company_uri>.dynamics.com/api/data/v8.1/leads'
post_fields = {"name": "Sample Account",
"creditonhold": "false",
"address1_latitude": 47.639583,
"description": "This is the description of the sample account",
"revenue": 5000000,
"accountcategorycode": 1
}
request = Request(url, urlencode(post_fields).encode())
request.add_header('Authorization', 'Bearer ' + access_token)
request.add_header("Content-Type", "application/json; charset=utf-8")
request.add_header('OData-MaxVersion','4.0')
request.add_header('OData-Version','4.0')
request.add_header('Accept','application/json')
resp = urlopen(request).read().decode()
Но я продолжаю получать тот же код ошибки 401. Я просмотрел всю документацию msdn, но не нашел способ сделать это напрямую, не используя никакой библиотеки, я просто хочу использовать простой почтовый запрос.
Поскольку код ошибки говорит «Неавторизованный», я думаю, что access_token нужно отправить другим способом. Может ли кто-нибудь помочь мне в правильном использовании access_token в Dynamics CRM? Спасибо!
Я изменила ресурс однажды, но я не получил ответа, я всегда получал «HTTP/1.1 400 Bad Request». С ресурсом https://graph.microsoft.com я получал код, но теперь понимаю, что это было полезно, потому что это не тот ресурс, который я хочу получить. Теперь я изменил ресурс, но я получаю эту ошибку 400. –
Вы должны прочитать ответ, он скажет, в чем проблема. – juunas
«Пользователь или администратор не согласился использовать приложение». Первоначальная проблема была из-за неправильного ресурса, поэтому я думаю, что это было решено. Спасибо @juunas. –