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

寻找OfficeDevPnP.Core.GetWebLoginClientContext的替代认证方案

解决方案

1. 使用PnP Framework的InteractiveAuthenticationProvider

你可以通过InteractiveAuthenticationProvider搭配LoginPrompt.Auto配置,实现和旧方法完全一致的行为:仅需传入SharePoint站点URL,用户已登录时直接复用凭据,未登录时才触发登录弹窗,无需显式输入用户名、密码或应用密钥。

示例代码:

using PnP.Framework;
using PnP.Framework.Authentication;

// 配置交互式认证规则,设置登录提示为自动检测
var authProvider = new InteractiveAuthenticationProvider("你的SharePoint站点URL", 
    new InteractiveAuthenticationOptions
    {
        LoginPrompt = LoginPrompt.Auto
    });

// 获取ClientContext并执行操作
using (var context = await authProvider.GetContextAsync())
{
    Web web = context.Web;
    context.Load(web);
    await context.ExecuteQueryAsync();
    
    // 在此编写文档上传逻辑,比如将Word文档内容写入SharePoint文档库
}

2. 结合Office.js的SSO实现静默认证(可选)

如果你的Word插件已配置单点登录(SSO),可以借助Office.js获取的访问令牌初始化CSOM上下文,实现完全无弹窗的静默认证(前提是用户已登录Office客户端)。

示例步骤:

  • 通过Office.js的getAccessTokenAsync接口获取SharePoint授权令牌
  • 使用TokenAuthenticationProvider初始化PnP Context:
using PnP.Framework;
using PnP.Framework.Authentication;

// 假设从Office.js获取到的有效访问令牌
string accessToken = "从Office.js获取的令牌";

var authProvider = new TokenAuthenticationProvider(accessToken);
using (var context = await authProvider.GetContextAsync("你的SharePoint站点URL"))
{
    // 执行文档上传操作
}

该方案需要在插件manifest中声明SSO权限,适合对无干扰体验要求更高的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 01:17:12