2017-09-16 5 views
1

Outlook 365 API를 사용하는 데 무서운 시간을 보내고 있습니다. 사용 사례는 매우 간단합니다. 사용자의 캘린더에 대한 정보를 추출하기 위해 매 시간마다 실행되는 스크립트를 만드십시오.Outlook 365 API - 인증

내 스크립트는 파이썬으로 실행되며 토큰을 얻을 수 있었지만 사용자의 이벤트를 가져올 수 없습니다. 나는 분명히 Microsoft Application Registration Portal에 내 앱을 등록하고 Calendar.read 애플리케이션 권한을 주었다. 관리자는 또한 /adminconsent 엔드 포인트에 액세스하여 동의를 보냈습니다.

url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token' 
data = { 
    'grant_type': 'client_credentials', 
    'client_id': app_id, 
    'scope': 'https://graph.microsoft.com/.default', <--- Really not sure about this here 
    'client_secret': client_secret, 
} 
r = requests.post(url, data=data) 
token = r.json().get('access_token') 

어떤 범위 내가 사용하는 가정 오전 : 여기

토큰 (문서 here)를 얻을하려면 코드인가? 설명서는 위의 내용에 대해서만 설명합니다.

그리고 사용자의 일정 읽기 : 다시

url = 'https://outlook.office.com/api/v2.0/users/{}/events'.format(user_email) 
headers = { 
    'Authorization': 'Bearer {}'.format(token) 
} 
r = requests.get(url, headers=headers) 

, 나는 정말 users/{user_email}/ 부분의 모르겠습니다. stackoverflow에서 비슷한 것을 한 사람이 있지만 어디서나 문서에서 찾을 수없는 사람을 읽었습니다.

나는 액세스 토큰을 얻을 수 있어요하지만 사용자의 달력을 읽으려고 다음과 같은 오류가 발생합니다 :

응답 [401]

는 액세스 토큰은 인증 방법을 사용하여 획득되는 이 응용 프로그램에 대한 액세스를 허용하기에는 너무 약합니다. 제시된 인증 강도는 1이고, 필요한 것은 2입니다.

제발 오, 제발 도와주세요. 나는이 아주 간단한 일을하는 데 이미 너무 많은 시간을 보냈다.

답변

0

나는 마침내 그것을 발견했다. 나는 아주 가까웠다.

Outlook 통합 API 끝점 대신 Microsoft Graph API 끝점을 사용해야했습니다.

import requests 

# Get a token 
url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token' 
data = { 
    'grant_type': 'client_credentials', 
    'client_id': app_id, 
    'scope': 'https://graph.microsoft.com/.default' 
    'client_secret': client_secret, 
} 
r = requests.post(url, data=data) 
token = r.json().get('access_token') 

# ... 

# Use the token using microsoft graph endpoints 
url = 'https://graph.microsoft.com/v1.0/users/{}/events'.format(user_email) # can also use the user_id (e.g. 12345-abcde-...) 
headers = { 
    'Authorization': 'Bearer {}'.format(token) 
} 
r = requests.get(url, headers=headers) 

마이크로 소프트의 문서는 정말 설명이 필요합니다 : 같은

마지막 코드 보인다. 비슷한 일을하는 API가 너무 많습니다.

+0

피드백을 보내 주신 Fabrice에게 감사드립니다. 그래프는 절대적으로 권장되는 API입니다. 실제로 Outlook 끝점을 사용합니다. 우리는 차이점을 설명하려는 시도와 여기에서 다른 것을 선택하는 이유에 대한 문서를 가지고 있습니다 : https://docs.microsoft.com/en-us/outlook/rest/compare-graph-outlook. 우리는 REST API 이야기를 통일하여 그래프가 더 좋은 방법임을 명확히 밝히고 있습니다. –

+0

차가움. 당신의 의견에 감사드립니다. 나는 그것이 당신이 한 버전에서 다른 버전으로 전환하려고하는 그 시점이기 때문에 나의 마지막 구절이라고 생각합니다. –