首页 > 解决方案 > 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 帐户,我怎么能完成它?如果可以使用一些控制台代码,那么我认为可以完成。

标签: c#onedrive

解决方案


我执行以下步骤来创建控制台应用程序以在 OneDrive 中创建文件夹:

1. 创建微软应用:

  1. 登录https://apps.dev.microsoft.com/
  2. 创建一个新应用
  3. 输入一些应用名称
  4. 在 Application Secretes 部分生成新密码
  5. 在平台部分添加平台。
  6. 添加了网络平台
  7. 提供一些重定向网址。这将是必需的,您也可以输入任何 localhost url。我输入了http://localhost:100/
  8. 在 Microsoft Graph 权限部分添加以下委托权限
  9. Files.ReadWriteAll, Directory.ReadWriteAll,offline_access(离线访问是非常重要的权限,没有这个权限你将无法自动生成访问令牌)
  10. 确保在高级选项中选中 LiveSDKSupport 复选框。

2.生成访问令牌的CODE值

  1. 使用您的应用程序 ID 更新以下网址(步骤 1.b)和重定向网址(步骤 1.g)。
  2. 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}
  3. 将 url 粘贴到浏览器地址栏中并发出获取请求(按 Enter)
  4. 登录到您的一个驱动器帐户
  5. 接受用户协议
  6. 代码重定向 url 并从重定向 url 获取代码查询字符串

3. 从代码值生成访问令牌和刷新令牌

  1. 打开邮递员
  2. 使用以下设置发出发布请求:端点: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 中生成的代码
    • 授权类型:授权代码
  3. 这将返回一个带有一些值的 json。从响应中复制 access_token 和 refresh_token。访问令牌可用于在一个驱动器中创建文件夹。但是,这将在一段时间内有效。要获取新令牌,我们需要使用刷新令牌生成新令牌。因此,将刷新令牌与客户端 ID 客户端密码和重定向 URL 一起存储在配置文件中。

4. 从代码生成访问令牌:

  1. 这可以通过 Postman 以及使用带有以下参数的简单 post 请求的代码来完成:
  2. 这将返回访问令牌作为响应。使用该访问令牌在一个驱动器中创建文件夹。

5. 在 OneDrive 中创建文件夹:

  1. 发出创建文件夹的帖子请求:

推荐阅读