计划中的Python O365身份验证问题

问题描述 投票:0回答:1

我有一个脚本可以进行网络抓取,并通过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 protected]')
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中运行良好-似乎任务调度程序/批处理文件找不到令牌。我已经看到here,可能需要将令牌保存在根目录中,但是我不确定令牌存储在何处,或者适合存储的根目录是什么。

对此授权流程有任何想法吗?谢谢

python-3.x authentication taskscheduler o365-flow
1个回答
1
投票

我有同样的问题。根据文档,用户应使用FileSystemTokenBackend。我最终创建了一个名为“ o365_token.txt”的文件,并将其存储在与脚本相同的文件夹中。我相信这是使用FileSystemTokenBackend创建令牌后文件的默认名称。O365 Documentation FileSystemTokenBackend

© www.soinside.com 2019 - 2024. All rights reserved.