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

本地Jupyter连接SharePoint报错:无法获取二进制安全令牌

解决SharePoint连接时"无法获取二进制安全令牌"的问题

可能的原因及对应解法

1. 代码变量引用错误

你代码里的UserCredential("{username}", "{password}")误用了字符串占位符语法,没有引用实际定义的账号密码变量。修正后代码:

ctx = ClientContext(site_url).with_credentials(UserCredential(username, password))

错误的占位符会导致用无效字符串而非真实凭证去认证,直接引发令牌获取失败。

2. 目标站点启用多因素认证(MFA)

UserCredential仅支持纯账号密码认证,若目标站点开启了MFA,需切换认证方式:

  • 交互式登录(适合本地调试):
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.authentication_context import AuthenticationContext

site_url = "你的完整站点URL"
ctx_auth = AuthenticationContext(site_url)
if ctx_auth.acquire_token_interactive(site_url):
    ctx = ClientContext(site_url, ctx_auth)
    web = ctx.web.get().execute_query()
    print("Web title: {0}".format(web.properties['Title']))
else:
    print(ctx_auth.get_last_error())
  • 应用权限认证(适合非交互式场景):
    需先在Azure AD注册应用并授予SharePoint相关权限,再用客户端ID和密钥认证:
from office365.runtime.auth.client_credential import ClientCredential
from office365.sharepoint.client_context import ClientContext

site_url = "你的完整站点URL"
client_id = "Azure应用客户端ID"
client_secret = "Azure应用密钥"

ctx = ClientContext(site_url).with_credentials(ClientCredential(client_id, client_secret))
web = ctx.web.get().execute_query()
print("Web title: {0}".format(web.properties['Title']))

3. 站点URL格式不完整

确保site_url是完整的SharePoint站点地址,例如https://xxx.sharepoint.com/sites/你的站点名称,不能遗漏协议头或站点路径。

4. 账号API权限受限

即使网页端能访问,账号可能被站点管理员禁用了API层面的访问权限。可以尝试用站点管理员账号测试连接,验证是否为权限问题。

5. 网络代理拦截请求

本地代理可能阻断了对login.microsoftonline.com的请求,导致无法获取令牌。可以关闭代理,或在代码中配置代理:

import os
os.environ['HTTP_PROXY'] = 'http://你的代理地址:端口'
os.environ['HTTPS_PROXY'] = 'http://你的代理地址:端口'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:49:54