我想创建一个python脚本,允许我通过命令行将文件上传到OneNote。我有完美的工作,它验证很好。但是,每次进行身份验证时,都必须打开浏览器窗口。 (这是因为使用OneNote只能使用身份验证令牌持续一个小时,并且必须使用刷新令牌来获取新令牌。)虽然我根本不需要与浏览器窗口进行交互,但事实上它需要打开一个是有问题的,因为程序必须专门在终端环境中运行。 (例如,OneNote身份验证代码尝试打开浏览器,但它不能,因为浏览器无法打开)。
如何解决这个问题?请假设无法更改环境设置。
更新
您必须获取代码才能生成访问令牌。这是启动浏览器的部分。对于该初始令牌,仅需要第一次。之后,刷新令牌请求不需要代码。 (我之所以称呼它,这就是问题)。
解决了每次运行程序时浏览器打开的问题。但是,它仍然存在浏览器必须打开该初始时间的问题。我不能在终端环境中这样做。有办法吗?
E.g。我可以保存代码并稍后调用它来获取访问令牌(到期时间有多长)?代码是否适用于任何用户,还是只适用于我?
答案 0 :(得分:0)
如果这始终使用相同的帐户 - 您可以将“浏览器打开和密码输入”设置为一次性设置过程。经过身份验证后,您将拥有“访问令牌”和“刷新令牌”。您可以继续使用访问令牌约1小时。一旦过期,您可以使用“刷新令牌”将其交换为“访问令牌”而无需任何用户交互。您应始终保留刷新令牌,以便以后获得新的访问令牌。
这就是像“IFTTT”这样的“后台”应用在较长时间内保持对您帐户的访问权限。
回答您的最新问题:
初始设置必须通过浏览器中的UI 。如果要自动执行此操作,则必须编写一些UI自动化。
答案 1 :(得分:0)
您无需使用浏览器刷新令牌,只需通过简单的http请求即可完成:https://msdn.microsoft.com/en-us/office/office365/howto/onenote-auth#get-new-access-token-msa