需要我需要能够将联机Excel电子表格与数据库中的数据同步。
问题根据Microsoft Graph api docs,这些写入操作需要Delegated (work or school account)
权限,无法使用应用程序权限完成。但是,我需要在没有用户交互的情况下定期在服务器上运行此操作。我尚未找到在没有用户交互的情况下获得Delegated (work or school account)
权限类型的令牌的方法。是否可以在服务器上获得所需的令牌/权限?
到目前为止我已经阅读了大量有关Microsoft身份验证流程和应用程序方案的内容(例如,this article和它的许多下游),但我一直未能找到一个合适的前进路径,从这个研究到目前为止,守护进程应用程序工作流似乎是最合适的除了,据我所知,它只允许应用程序权限。代表流似乎是一个替代方案,但1.我必须选择一个Microsoft用户来代表执行此操作,这似乎很奇怪,2.我不确定我是否可以在从服务器进程中分离出一个用户后,对该用户进行身份验证,然后挂接到服务器上的令牌(不断刷新它?)。有没有办法让它工作?有没有更好的办法?
2条答案
按热度按时间d7v8vwbk1#
如果你在问题中提到的文件中的API是你的目标API,那么很明显你只能使用委托的api权限,也就是说你必须先让一个用户登录,你只能修改属于登录用户的驱动项中的excel文件(我是用我的账号登录的,我可以修改我的excel文件,但我不能修改你的excel文件)。
因此,您不希望每次都有一个用户登录,但您仍然希望使用此API,您只能尝试使用ROPC流在应用程序中硬编码用户名和密码(例如Excel管理员帐户的用户名和密码),并仅使您的应用程序修改属于此帐户的Excel文件。
thtygnil2#
我同意*@Tiny Wang *,你可以使用ROPC Flow(但微软不推荐),在那里你可以预定义用户名和密码。
我使用以下参数生成了访问令牌:
通过使用上面的访问令牌,您可以尝试更新如下范围对象的属性:
在与服务器进程分离后对用户进行身份验证,然后挂在服务器上的令牌上(不断刷新它?)
如果不想通过引用此MsDoc连续刷新访问令牌,可以尝试延长访问令牌的生存期。