You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端通过Graph API获取SharePoint全部文档列表的实现问题

从SharePoint通过Graph API获取全量文档列表的正确实现方案

1. 授权权限配置校验

首先确认你在Azure AD门户为应用配置了以下Delegated权限之一,且已完成用户授权同意:

  • Sites.Read.All:可读取所有站点内容
  • Sites.ReadWrite.All:可读写所有站点内容
  • 若仅需访问指定站点,可配置Sites.Selected并单独分配对应站点的访问权限
    注意:移动端场景仅支持Delegated权限,不可使用Application类型权限

2. 标准调用流程

你已经完成MSAL登录获取访问令牌,后续按以下步骤调用即可:

  1. 从你已获取的站点数据中提取站点id字段,格式通常为{租户ID},{站点ID},{Web ID}
  2. 调用接口获取文档列表:
    • 若只需获取默认文档库的根目录文件,请求路径为 GET https://graph.microsoft.com/v1.0/sites/{替换为你的站点ID}/drive/root/children
    • 若需获取所有文档库的内容,先调用 GET https://graph.microsoft.com/v1.0/sites/{替换为你的站点ID}/drives 获取站点下全部文档库,再逐个遍历每个文档库的/root/children路径
  3. 若需要递归获取子目录下的所有文件,对返回结果中folder属性不为空的目录条目,继续调用 GET https://graph.microsoft.com/v1.0/sites/{替换为你的站点ID}/drives/{替换为文档库ID}/items/{替换为目录条目ID}/children 即可

3. Kotlin代码实现示例

基于你已接入的MSAL认证逻辑,使用OkHttp发起请求的参考代码如下:

// 此处accessToken为你通过MSAL登录获取的有效访问令牌
val targetSiteId = "你提取到的目标站点ID"
val graphRequest = Request.Builder()
    .url("https://graph.microsoft.com/v1.0/sites/$targetSiteId/drive/root/children")
    .addHeader("Authorization", "Bearer $accessToken")
    .build()

OkHttpClient().newCall(graphRequest).enqueue(object : Callback {
    override fun onFailure(call: Call, e: IOException) {
        // 处理网络异常等请求失败逻辑
    }

    override fun onResponse(call: Call, response: Response) {
        if (response.isSuccessful) {
            val respContent = response.body?.string()
            // 解析返回JSON提取文件列表即可
        } else {
            // 打印错误码和错误内容排查问题:403为权限不足,404为站点/路径不存在
            Log.e("GraphAPI_ERROR", "错误码:${response.code},错误信息:${response.body?.string()}")
        }
    }
})

4. 常见问题排查

  • 若返回403错误:优先检查权限配置是否正确,是否完成用户授权,可解析访问令牌查看scp字段确认权限是否已生效
  • 若无返回值:检查是否正确添加Authorization请求头,接口路径是否拼写错误,站点ID是否填写正确
  • 不建议直接调用SharePoint原生REST API,移动端场景优先使用Graph API封装的接口,可避免权限适配问题

内容的提问来源于stack exchange,提问作者Annie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:48:00