主题
SharePoint 连接器会把某个 SharePoint 文档库里的一个文件夹(含子文件夹)同步进一个已连接文件夹。连接方式有两种:
| 卡片 | 以谁的身份登录 | 什么时候选它 |
|---|---|---|
| SharePoint | 你本人,经由 Microsoft 登录弹窗 | 你想同步自己账号能打开的那些站点 |
| SharePoint Keys | 一个 Entra 应用注册,配一个 client secret | 你想要一个不绑定到具体人的连接,或者你的租户不允许用户授权 |
用登录方式连接 SharePoint
- 在 Files → Connections 上点击 Add connection,选择 SharePoint,再点击 Authorize。
- 用你的 Microsoft 工作账号登录,并接受弹窗要求的每一项权限。
该连接读取你账号可打开的 SharePoint 站点。它申请的是委托式(delegated)的 Sites.Read.All 与 Sites.FullControl.All 权限。后者让同步能感知某个文件夹被共享或取消共享;没有它,权限变化要等到一次全量重同步才反映出来。许多租户只允许管理员授予这两项。如果弹窗提示需要管理员批准,对话框里可能出现一个标着“Your admin may need to approve SharePoint access”的链接,请把它发给租户里的 Global 或 Application Administrator。他们批准后重试即可。
如果登录时取消了勾选某项权限,连接会被拒绝,并提示缺少哪一项,例如 “This connection is missing Sites.FullControl.All”。请重新连接并接受全部权限。
用 Entra 应用注册连接 SharePoint
应用注册以自己的身份读取 SharePoint,不需要任何用户登录。
在 Microsoft Entra 管理中心 里进入 App registrations,新建一个注册。默认设置即可,它不需要重定向 URI。
在 API permissions 下点击 Add a permission → Microsoft Graph → Application permissions,添加:
- 必需(四选一):
Sites.Selected、Sites.Read.All、Sites.ReadWrite.All或Sites.FullControl.All。Sites.Selected范围最窄:应用只能读管理员逐个授予它的那些站点。其余几项可及租户内的所有站点。 - 可选:
Sites.FullControl.All,它还能让同步读取每个文件的访问者名单。没有它,文件与文件夹照常同步。
- 必需(四选一):
为你的租户点击 Grant admin consent。每一项权限的状态列都应显示绿色对勾。
如果你选了
Sites.Selected,就要逐个站点授予应用读取权限。由 SharePoint 或 Global 管理员按站点操作,例如通过 Graph:POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions { "roles": ["read"], "grantedToIdentities": [ { "application": { "id": "{client-id}", "displayName": "LlamaCloud" } } ] }或使用 PnP PowerShell 的
Grant-PnPAzureADAppSitePermission。在 Certificates & secrets 下创建一个 client secret,并复制它的 Value。Azure 只显示该 value 一次。密钥的 ID 是另一个东西,填进去不管用。
在 Files → Connections 上点击 Add connection,选择 SharePoint Keys,填写:
| 字段 | 在哪里能找到 |
|---|---|
| Directory (tenant) ID | 应用的 Overview 页。租户的已验证域名也可以用。 |
| Application (client) ID | 应用的 Overview 页 |
| Client secret | 第 5 步复制的 secret value |
点击 Connect。LlamaCloud 会为这个应用取一个 token,并检查它携带的权限后再保存,所以多数配置错误会当场暴露,并给出 Entra 自己的报错。两个常见的:
- “This app registration has no SharePoint site permission”:必需权限里没有任何一项被同意授予,或者某一项被加成了委托式权限而不是应用式权限。报错会列出 token 实际携带的权限。
- 关于 secret 的 AADSTS 错误:你把 secret 的 ID 而不是 value 粘了进去,或者该 secret 已过期。
Sites.Selected 的应用可读哪些站点并不包含在它的 token 里,所以这一项是在你用该连接创建文件夹时校验,而不是在这里。
从 SharePoint 连接创建文件夹
在 Files → New folder → Connected folder 里选择你的 SharePoint 连接。
登录式连接: 会打开 Microsoft 自己的文件选择器。选一个文件夹即可,其中全部内容都会同步,含子文件夹。
应用注册连接: 没有选择器,因为应用没有可供浏览的用户身份。请按 ID,或按 SharePoint 显示的名称填写位置:
| 字段 | 该填什么 |
|---|---|
| Site | 站点 ID,例如 contoso.sharepoint.com,7a2b…,9c4d…,或者站点名 |
| Document library | 可选。文档库(drive)ID,例如 b!xY3z…、其 SharePoint 设置 URL 里的列表 GUID,或文档库名称。留空则用站点的默认文档库。 |
| Folder | 该文件夹的 item ID,例如 01ABCDEF2GHIJKLM…(SharePoint 里文件夹的 GUID 也可以),或它在库内的路径,例如 brand/assets |
名称与路径会在创建文件夹时被解析成 ID,存下来的就是 ID。两者都填时以 ID 为准。ID 可以用 Graph Explorer 获取(以一个能打开该站点的身份登录):
终端窗口
# Site ID
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/Marketing
# Document library IDs for that site
GET https://graph.microsoft.com/v1.0/sites/{site-id}/drives
# Folder ID, by its path inside the library
GET https://graph.microsoft.com/v1.0/drives/{drive-id}/root:/brand/assets每次响应里的 id 字段就是该填进表单的值。给文件夹命名并点击 Create folder。
SharePoint 连接器的同步方式
首次完整复制之后,每次同步向 Microsoft Graph 询问自上次以来的变更。被编辑过的文件重新下载;被删除或被移出该范围的文件从你的 project 文件夹里移除。
SharePoint 连接器的故障排查
| 提示 | 该检查什么 |
|---|---|
| ”This app registration has no admin-consented application permissions” | 没有授予管理员同意,或者权限被加成了委托式。请在 Application permissions 下添加并授予同意。 |
| ”This app registration has no SharePoint site permission” | 在 Application permissions 下添加 Sites.Selected 或租户级的 Sites.* 权限,并授予同意。 |
| 用应用注册连接创建文件夹时出现 ”Scope not accessible” | 选了 Sites.Selected 时,应用未被授予该站点的访问权。请按第 4 步授予。 |
| 登录式连接出现 ”SharePoint refused this connection despite …” | 同意授予所在的租户与你登录的租户不是同一个。 |
| ”SharePoint rejected this connection’s token” | 登录式连接:请重新登录。 |
| ”This account’s token is for …, but the SharePoint file picker requires one for …” | 选择器无法用当前登录身份打开。请改用应用注册连接,并按 ID 填写文件夹。 |