寻找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
相关产品推荐
相关产品推荐

