urllib2를 사용하여 Python에서 Dynamics CRM Web API에 요청하는 앱을 만들려고합니다. 지금까지 나는 다른 게시물을 만들려고 그런Dynamics CRM 웹 API에 요청하기
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']
다음 검색 authorization_code와 나는 urllib2를 가진 access_token은, refresh_token도 등을 얻을 수 있습니다 https://login.microsoftonline.com/common/oauth2/authorize 에 POST 요청을하여 푸른 응용 프로그램과 사용자가 로그인 할 수 있습니다 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 설명서를 다 살펴 보았지만 라이브러리를 사용하지 않고이 작업을 직접 수행 할 방법을 찾지 못했습니다. 간단한 게시물 요청 만 사용하고 싶습니다.
오류 코드에 Unauthorized가 표시되므로 access_token을 다른 방법으로 보내야한다고 생각합니다. Dynamics CRM에서 access_token을 올바르게 사용하는 방법에 대해 도움을 줄 수 있습니까? 감사합니다.
을하지만 난 대답을 가진 적이 없어, 난 항상 "HTTP/1.1 400 잘못된 요청"을 얻고 있었다. https://graph.microsoft.com 리소스를 통해 코드를 얻었지만 이제는 액세스 권한을 부여하려는 리소스가 아니기 때문에 유용하다는 것을 알았습니다. 지금 자원을 변경했지만 400 오류가 발생합니다. –
응답을 읽으면 문제가 무엇인지 말할 수 있습니다. – juunas
"사용자 또는 관리자가 응용 프로그램 사용에 동의하지 않았습니다." 원래의 문제는 잘못된 리소스 때문이었습니다. 그래서 이것이 해결되었다고 생각합니다. 고마워요 @ 주니어. –