c# - Microsoft onedrive:使用 API 密钥创建文件夹,无需登录
问题描述
我可以使用Graph API
. 但是第一次我必须登录到 Microsoft 帐户。以下是我需要登录的链接:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_mode=form_post&response_type=code+id_token&scope={scope}&state={state}&nonce={nonce}&x-client-SKU={x-client-SKU}&x-client-ver={x-client-ver}
我希望实现所有这些服务器端。如果不登录 Microsoft 帐户,我怎么能完成它?如果可以使用一些控制台代码,那么我认为可以完成。
解决方案
我执行以下步骤来创建控制台应用程序以在 OneDrive 中创建文件夹:
1. 创建微软应用:
- 登录https://apps.dev.microsoft.com/
- 创建一个新应用
- 输入一些应用名称
- 在 Application Secretes 部分生成新密码
- 在平台部分添加平台。
- 添加了网络平台
- 提供一些重定向网址。这将是必需的,您也可以输入任何 localhost url。我输入了http://localhost:100/
- 在 Microsoft Graph 权限部分添加以下委托权限
- Files.ReadWriteAll, Directory.ReadWriteAll,offline_access(离线访问是非常重要的权限,没有这个权限你将无法自动生成访问令牌)
- 确保在高级选项中选中 LiveSDKSupport 复选框。
2.生成访问令牌的CODE值
- 使用您的应用程序 ID 更新以下网址(步骤 1.b)和重定向网址(步骤 1.g)。
- https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id= {client_id}&scope=User.Read User.ReadWrite User.ReadBasic.All Mail.Send Calendars.ReadWrite Mail.ReadWrite Files.ReadWrite offline_access&response_type=code&redirect_uri={redirect_url}
- 将 url 粘贴到浏览器地址栏中并发出获取请求(按 Enter)
- 登录到您的一个驱动器帐户
- 接受用户协议
- 代码重定向 url 并从重定向 url 获取代码查询字符串
3. 从代码值生成访问令牌和刷新令牌
- 打开邮递员
- 使用以下设置发出发布请求:端点:https ://login.microsoftonline.com/common/oauth2/v2.0/token
- 标头 > 内容类型:application/x-www-form-urlencoded
- 身体 >
- client_id:您在第 1 步中的客户端/应用程序 ID
- redirect_uri:您在第 1 步中的重定向网址
- client_secret:您的客户端密码(在步骤 1 中生成的应用密码)
- 代码:在步骤 2 中生成的代码
- 授权类型:授权代码
- 这将返回一个带有一些值的 json。从响应中复制 access_token 和 refresh_token。访问令牌可用于在一个驱动器中创建文件夹。但是,这将在一段时间内有效。要获取新令牌,我们需要使用刷新令牌生成新令牌。因此,将刷新令牌与客户端 ID 客户端密码和重定向 URL 一起存储在配置文件中。
4. 从代码生成访问令牌:
- 这可以通过 Postman 以及使用带有以下参数的简单 post 请求的代码来完成:
- 端点:https ://login.microsoftonline.com/common/oauth2/v2.0/token
- 方法:发布
- 内容类型:application/x-www-form-urlencoded
- 数据:“client_id={client_id}&redirect_uri={redirect_url}&client_secret={client_secret}&grant_type=refresh_token&refresh_token={refresh_token}”
- 这将返回访问令牌作为响应。使用该访问令牌在一个驱动器中创建文件夹。
5. 在 OneDrive 中创建文件夹:
- 发出创建文件夹的帖子请求:
- 端点:https ://graph.microsoft.com/v1.0/me/drive/root/children
- 授权:“Bearer {步骤 4 中生成的 access_token}”
- 内容类型:应用程序/json
- 发布数据:new { name = FolderName, folder = new { childCount = 0 } };
推荐阅读
- r - lapply 使用两个参数生成多个相似的图
- variables - IBM DB2:运行 SQL 脚本
- javascript - 从输入框中取出单词并随机选择一个
- javascript - 基于视口可见性的 Javascript 函数适用于桌面但不适用于智能手机?
- c - 闰年和次日日期计划的长/射月
- python - 使用类来构建由其他对象组成的对象是一种好习惯吗?
- java - java继承和字符串插值
- python - 如何用python找到我的弹丸运动范围?
- python - 从 python Popen 运行 IDL .pro?
- excel - 使用 LEFT OUTER JOIN 的 SQL 查询语法错误