【问题标题】:Error in SharePoint oAuth Authentication using Sharepoint Online CSOM and PnP in .net core在 .net 核心中使用 Sharepoint Online CSOM 和 PnP 进行 SharePoint oAuth 身份验证时出错
【发布时间】:2022-04-20 16:54:37
【问题描述】:

我正在尝试使用 Sharepoint Online CSOM 和 PnP 使用 oAuth(Azure AD 应用程序)进行共享点身份验证,但它给出了错误“字典中不存在给定的密钥。”。我已经创建了 Azure AD 应用程序并在该应用程序中添加了 Sharepoint AllSite.FullControl 的 API 权限。

我正在使用试用共享点租户。

这是我的代码 sn-ps:

ClientContext _sharepointContaxt = null;
string Username = [Username];
string Password = [Password];
string AppId="67b1845e-88b1-4e6c-b7db-7f1d3abe3b06";
Uri site = new Uri([Sharepoint_site_url]);                  
using (var authenticationManager = new AuthenticationManager("67b1845e-88b1-4e6c-b7db-7f1e3aae3a06"))
using (_sharepointContaxt = authenticationManager.GetContext(site, Username, SecurePassword(Password)))
{
   Web web = _sharepointContaxt.Web;
   _sharepointContaxt.Load(web);
   _sharepointContaxt.ExecuteQuery();
}

【问题讨论】:

    标签: oauth sharepoint-online


    【解决方案1】:

    我遇到了同样的“字典中没有给定的键”。每当我偶尔在 for 循环中向 Azure AD 发送 Post 请求时都会出现问题。我不确定这个失败场景是否和你的一样。

    我的调试方法之一是检查dictionary 并查看丢失了哪个“给定密钥”。在AuthenticationManager 类中,有一个名为AcquireTokenAsync 的私​​有方法。该方法是请求Azure AD返回SPO访问令牌,并以Json格式保存在变量tokenResult中,然后使用GetProperty("access_token")获取令牌。

    如果 Azure AD 由于某种原因没有返回 SPO 令牌,access_token 可能在 tokenResult 中不可用,导致您看到的错误代码。

    在这种情况下,tokenResult 中的错误消息可帮助您查看 Azure AD 未返回令牌的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多