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

如何无需登录与管理员同意,通过Flask API调用GraphAPI读取Excel内容

错误根因

当前你使用的客户端凭证流调用Graph API,必须要求Azure管理员为应用分配Files.Read.All等对应应用权限,并授予全局管理员同意,否则生成的访问令牌缺少对应权限声明,就会返回scp or roles claim need to be present的错误,该流在无管理员权限的场景下完全不可用。

无管理员同意、无需前端登录的可行方案
  • 方案1:直接获取文件匿名直链本地解析
    如果你有权限调整对应Excel文件的共享设置,可以将文件设置为所有拥有链接的人均可查看,获取文件的直接下载链接后,直接用requests下载文件,再用openpyxl/pandas等库本地解析内容,全程不需要调用Graph API,也不需要任何认证逻辑。
    示例核心代码:
    import pandas as pd
    import requests
    from io import BytesIO
    
    # 替换为公开共享后的Excel文件直链
    file_url = "替换为你的Excel文件公开下载链接"
    res = requests.get(file_url)
    # 可按需指定读取范围
    df = pd.read_excel(BytesIO(res.content), sheet_name="Sheet1", usecols="A:V", nrows=500)
    print(df.values)
    
  • 方案2:使用委派权限+预生成刷新令牌
    无需管理员同意,只需拥有该Excel访问权限的普通用户完成一次授权即可,后续可以无交互调用接口:
    1. 在Azure应用注册中,配置平台为移动和桌面应用,添加委派权限Files.Read,该权限无需管理员同意
    2. 首次手动走授权码流,让有权限的用户登录同意,获取refresh_token并持久化存储
    3. 后续API调用时直接用refresh_token换取访问令牌,不需要用户再次登录,也无需管理员操作
  • 方案3:将文件同步到自主可控存储
    如果上述方案都不可行,可以将目标Excel文件通过自动同步规则(如OneDrive同步客户端、Power Automate定时导出)同步到你有权限访问的本地服务器、对象存储等位置,直接读取本地存储的文件即可,不需要调用微软接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:06:05