c# - Microsoft Graph 无需每次或 token 长时间登录

标签 c# microsoft-graph-api

我正在编写一个 Windows 服务应用程序,该应用程序可以在后台运行几个月而无需用户交互,我希望该应用程序将使用 Microsoft.Graph api 将文件上传到 OneDrive。我知道如何通过代码登录并成功上传文件。

我从简单的控制台应用程序开始,当我登录时,有一些 Windows 窗口询问用户名和密码,之后我填写用户名和密码,我从服务器响应中获取一些 token 。 token 会在大约一个小时后失效。

如何使 token 长时间相关,例如几个月,我的目标是我不想每次都在 Windows 窗口中登录。

Overview of Microsoft Graph

最佳答案

您无法控制 token 的生命周期。这是由租户管理员控制的。

对于守护进程/服务,您最可能想要的是“仅应用程序” token 。它使用稍微不同的 OAuth 授权(称为客户端凭据),与您今天使用的授权代码授权不同,它不需要用户登录。您可以在 Get access without a user 下的文档中阅读有关此内容的更多信息。 .

如果您想继续使用“应用程序+用户” token (即授权代码授予),则需要通过请求 offline_access 范围来获取刷新 token 。您需要将此刷新 token 存储在本地计算机上(我强烈建议您 protect it like you would a password )。然后,您可以在需要时将该刷新 token 交换为新的访问 token 。您可以在Use the refresh token to get a new access token下的文档中找到有关刷新 token 的详细信息。 .

关于c# - Microsoft Graph 无需每次或 token 长时间登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56149087/

相关文章:

c# - 为 async void main 设置 ApartmentState

c# - 为什么 ASP.NET 找不到我的文本框?

c# - 使用旧解决方案将 nuget 包添加到 .net 核心项目时如何修复 $(NETStandardImplicitPackageVersion) 错误?

c# - .NET Graph SDK 更新 Sharepoint Online 列表项值

azure - 如何验证 Microsoft Graph API jwt access_token 并保护您的 API?

c# - 如何在 C# 中获取可用或使用的内存

c# - 在 ASP.NET Core 中添加数据库驱动的调度程序的正确位置是什么?

c# - 无法在列表中创建文件夹

oauth-2.0 - Microsoft Graph API 的访问 token 立即过期

c# - 使用用户分配的托管标识通过 MS Graph API 访问 Azure AD B2C