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

如何用Python调用OneDrive API获取文件夹文件列表并生成可分享链接

OneDrive API 实现文件夹枚举与批量生成分享链接方案

你需要的两个需求都有对应的官方API支持,不需要额外做兼容处理,具体实现逻辑如下:

1. 获取指定文件夹下所有条目列表

调用OneDrive Graph API的GET /drives/{drive-id}/items/{folder-item-id}/children接口即可实现,如果你使用的是个人版OneDrive,也可以用/me/drive/items/{folder-id}/children简化调用路径。接口返回结果会包含目标文件夹下所有文件、子文件夹的基础元数据,包括名称、ID、大小、创建时间等常用字段。
如果目标文件夹内条目超过200条,接口会返回@odata.nextLink分页标记,循环调用直到该字段不存在即可拿到全量条目。
Python调用时可以用requests库直接发请求,也可以用微软官方的msgraph-sdk-python库简化鉴权和调用流程。

2. 为单个条目生成可分享链接

调用POST /drives/{drive-id}/items/{item-id}/createLink接口即可实现,你可以通过请求参数自定义链接的权限和访问范围:

  • 权限类型参数type可选值:view(只读访问)、edit(可编辑访问)、embed(网页嵌入专用链接)
  • 访问范围参数scope可选值:anonymous(任何人无需登录即可访问)、organization(仅所属租户成员可访问)、users(仅指定用户可访问)

请求示例JSON Body:

{
  "type": "view",
  "scope": "anonymous"
}

接口返回结果中的link.webUrl字段就是你需要的可分享链接。

Python核心实现代码片段

以下代码基于requests库编写,前提是你已经完成Graph API鉴权拿到了有效access token:

import requests

ACCESS_TOKEN = "你申请到的鉴权token"
TARGET_FOLDER_ID = "目标文件夹的Item ID"

# 拉取指定文件夹下所有条目
def get_all_folder_items(folder_id):
    item_list = []
    request_url = f"https://graph.microsoft.com/v1.0/me/drive/items/{folder_id}/children"
    headers = {"Authorization": f"Bearer {ACCESS_TOKEN}"}
    while request_url:
        resp = requests.get(request_url, headers=headers)
        resp.raise_for_status()
        resp_data = resp.json()
        item_list.extend(resp_data.get("value", []))
        request_url = resp_data.get("@odata.nextLink")
    return item_list

# 为单个条目生成分享链接
def gen_item_share_link(item_id, link_type="view", access_scope="anonymous"):
    request_url = f"https://graph.microsoft.com/v1.0/me/drive/items/{item_id}/createLink"
    headers = {
        "Authorization": f"Bearer {ACCESS_TOKEN}",
        "Content-Type": "application/json"
    }
    payload = {"type": link_type, "scope": access_scope}
    resp = requests.post(request_url, headers=headers, json=payload)
    resp.raise_for_status()
    return resp.json()["link"]["webUrl"]

# 主逻辑
if __name__ == "__main__":
    all_items = get_all_folder_items(TARGET_FOLDER_ID)
    for item in all_items:
        share_link = gen_item_share_link(item["id"])
        print(f"文件名:{item['name']},分享链接:{share_link}")

注意事项

  • 生成匿名分享链接需要你所属的OneDrive管理员开启了对应权限,如果调用时报权限相关错误,优先检查租户的全局分享设置
  • 批量生成分享链接时建议控制请求频率,每两次请求之间加0.1-0.5秒的延时,避免触发Graph API的限流规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:36:02