2

我想创建一个 python 脚本,允许我通过命令行将文件上传到 OneNote。我让它完美地工作并且它验证得很好。但是,每次进行身份验证时,都必须打开浏览器窗口。(这是因为 OneNote 的身份验证令牌仅持续一个小时,并且它必须使用刷新令牌来获取新令牌。)虽然我根本不需要与浏览器窗口交互,但它需要打开的事实一个是有问题的,因为程序必须专门在终端环境中运行。(例如,OneNote 验证码尝试打开浏览器,但由于没有浏览器可以打开而无法打开)。

我怎样才能解决这个问题?请假设无法更改环境设置。

更新:

您必须获取代码才能生成访问令牌。这是启动浏览器的部分。不过,对于该初始令牌,它只是第一次需要。之后,刷新令牌请求就不需要代码了。(我为两者都调用它,这就是问题所在)。

这解决了我每次运行程序时打开浏览器的问题。但是,它仍然存在浏览器必须在初始时间打开的问题。我不能在终端环境中这样做。有办法解决吗?

例如,我可以保存代码并稍后调用它以获取访问令牌(多久到期)?该代码是否适用于任何用户,还是只适用于我?

4

2 回答 2

0

您不需要浏览器来刷新令牌,只需一个简单的 http 请求即可完成:https ://msdn.microsoft.com/en-us/office/office365/howto/onenote-auth#get-new -访问令牌-msa

于 2016-07-22T01:40:18.027 回答
0

如果始终使用同一个帐户 - 您可以将“浏览器打开和密码输入”设置为一次性设置过程。一旦你通过了身份验证,你就有了“访问令牌”和“刷新令牌”。您可以继续使用访问令牌约 1 小时。一旦过期,您可以使用“刷新令牌”将其换成“访问令牌”,无需任何用户交互。您应该始终保留刷新令牌,以便以后获得新的访问令牌。

这就是“IFTTT”等“后台”应用程序如何在较长时间内保持对您帐户的访问。

回答您更新的问题:

初始设置必须通过浏览器中的 UI。如果你想自动化这个,你必须编写一些 UI 自动化。

于 2016-07-21T23:22:56.237 回答