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

Node.js连接SharePoint:现有Client ID代码失效,求用户名密码认证方案

用用户名密码连接SharePoint实现Excel上传下载

当然可以通过用户名和密码连接SharePoint,无需使用客户端ID、客户端密钥和租户ID。在Node.js环境下,@pnp/nodejs包提供了UsernamePasswordFetchClient,专门用于这种用户名密码认证场景,下面是修改后的完整可运行代码:

import { sp } from "@pnp/sp";
import { UsernamePasswordFetchClient } from "@pnp/nodejs";
import xlsx from "xlsx";
import fs from "fs";

// SharePoint配置:使用用户名密码认证
sp.setup({
  sp: {
    fetchClientFactory: () => new UsernamePasswordFetchClient(
      "<你的用户名>", // 格式支持 user@domain.com 或 domain\username
      "<你的密码>",
      "<sharepoint_site_url>" // 示例:https://yourdomain.sharepoint.com/sites/your-site
    ),
    baseUrl: "<sharepoint_site_url>",
  },
});

// 上传Excel到SharePoint文档库
async function uploadExcel(filePath, libraryName, fileName) {
  try {
    const fileBuffer = fs.readFileSync(filePath);
    await sp.web.getFolderByServerRelativeUrl(libraryName).files.add(fileName, fileBuffer, true);
    console.log("文件上传成功!");
  } catch (err) {
    console.error("上传文件出错:", err);
  }
}

// 从SharePoint下载Excel文件
async function downloadExcel(libraryName, fileName, downloadPath) {
  try {
    const file = await sp.web.getFileByServerRelativeUrl(`${libraryName}/${fileName}`).getBuffer();
    fs.writeFileSync(downloadPath, file);
    console.log("文件下载成功!");
  } catch (err) {
    console.error("下载文件出错:", err);
  }
}

// 示例调用
const filePath = "example.xlsx";
const libraryName = "Shared Documents"; // 根据实际文档库名称修改
const fileName = "example.xlsx";
const downloadPath = "downloaded_example.xlsx";

// 执行上传和下载流程
(async () => {
  await uploadExcel(filePath, libraryName, fileName);
  await downloadExcel(libraryName, fileName, downloadPath);
})();

关键注意事项

  • 用户名格式:支持user@yourdomain.com(UPN格式)或DOMAIN\username两种格式,根据你的SharePoint环境选择合适的格式
  • MFA限制:如果账号启用了多因素认证(MFA),这种用户名密码认证方式无法生效,需要改用客户端凭据或其他支持MFA的认证方案
  • 版本兼容:确保@pnp/sp和@pnp/nodejs使用兼容的稳定版本,避免因版本不匹配导致的运行错误
  • 权限要求:所用账号必须拥有目标文档库的读写权限,否则会返回权限不足的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:12:45