Проблемы аутентификации Python O365 по расписанию
У меня есть сценарий для веб-очистки и отправки данных по электронной почте через пакет O365. Я зарегистрировал приложение в Azure, завершил процесс аутентификации, и код отлично работает в Jupyter Notebook. Однако проблемы начинаются, когда я пытаюсь запустить сценарий через планировщик задач или в пакетном файле. Вот код:
content = html_template.format(df.to_html(index=False))
credentials = ('AzureappID', 'azureSecret')
account = Account(credentials)
m = account.new_message()
m.to.add('email@x.com')
m.subject = 'Test'
m.body = content
m.send()
Пакетный файл показывает мне эту ошибку, которая, похоже, возникает на m.send()
линия:
File "C:\ProgramData\Anaconda3\lib\site-packages\O365\message.py", line 694, in send
response = self.con.post(url, data=data)
File "C:\ProgramData\Anaconda3\lib\site-packages\O365\connection.py", line 787, in post
return self.oauth_request(url, 'post', data=data, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\O365\connection.py", line 763, in oauth_request
self.session = self.get_session(load_token=True)
File "C:\ProgramData\Anaconda3\lib\site-packages\O365\connection.py", line 539, in get_session
raise RuntimeError('No auth token found. Authentication Flow needed')
RuntimeError: No auth token found. Authentication Flow needed
Кажется, что токен был загружен, но затем в строке "get_session" говорится, что токен не был найден. Как я уже сказал, код в Jupyter работает нормально - кажется, что планировщик задач / командный файл не может найти токен. Я видел здесь, что токен, возможно, нужно сохранить в корневом каталоге, но я не уверен, где хранится токен или какой соответствующий корневой каталог будет для хранения.
Есть какие-нибудь мысли по поводу этого потока авторизации? Спасибо
1 ответ
Я была такая же проблема. Согласно документации, пользователь должен использовать FileSystemTokenBackend. В итоге я создал файл с именем o365_token.txt и сохранил его в той же папке, что и мой скрипт. Я считаю, что это имя файла по умолчанию после создания токена с помощью FileSystemTokenBackend. Документация O365 FileSystemTokenBackend