Статус HTTP 401: неавторизованная ОШИБКА с python api O365 - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь узнать время доступности другого человека (отображается в outlook). Моя компания использует Office 365 для управления встречами. Итак, я записываю эти программы для получения данных, но это не работает. (Я пытался проверить, используя личный адрес электронной почты, а не адрес компании.)

credentials = (xxxx, yyyy)
account = Account(credentials)

if not account.is_authenticated:
    account.authenticate(scopes=['basic', 'calendar_all'])

schedule = account.schedule()
schedules = ['xxxxx@hotmail.com', 'yyyyy@hotmail.com']
start = dt.datetime(2019, 10, 30, 19, 45, tzinfo=ja) 
end = dt.datetime(2019, 10, 31, 19, 45, tzinfo=ja) 

cal = schedule.get_availability(schedules, start, end, interval=30)

print(cal)

сообщение об ошибке

[{'scheduleId': 'xxxx@hotmail.com', 'error': {'message': 'Proxy web request failed. , inner exception: System.Net.WebException: The request failed with HTTP status 401: Unauthorized.\r\n   
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)\r\n   
at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)\r\n   
at Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.Service.EndGetUserAvailability(IAsyncResult asyncResult)\r\n   
at Microsoft.Exchange.InfoWorker.Common.Availability.FreeBusyApplication.EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, IService service, IAsyncResult asyncResult)\r\n   
at Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequest.EndInvoke(IAsyncResult asyncResult)\r\n   
at Microsoft.Exchange.InfoWorker.Common.Availability.AsyncWebRequest.EndInvokeWithErrorHandling()', 'responseCode': 'ErrorProxyRequestProcessingFailed'}, 'availabilityView': []}, 

{'scheduleId': 'yyyy@hotmail.com', same message...}

Я знаю, что поток аутентификации учетных данных клиента может быть неправильным, но я не знаю, какойне так.

(работает другая программа, подобная следующей, поэтому я думаю, что не все сертификаты неверны)

credentials = (xxx, yyy)
account = Account(credentials)
schedule = account.schedule()

calendar = schedule.get_default_calendar()
new_event = calendar.new_event()  
new_event.start = dt.datetime(2019, 11, 30, 19, 45) 
new_event.save()

Любое руководство будет высоко ценится.

...