401 für ExecuteQuery in SharePoint CSOM nicht autorisiertC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 401 für ExecuteQuery in SharePoint CSOM nicht autorisiert

Post by Anonymous »

Ich versuche, die SharePoint -Site mit Client -ID und Geheimnis zu verbinden, aber erwerben Sie bei der Ausführung auf die ExecuteQuery () -Methode. App -Registrierungen, sowohl Microsoft -Diagramm- als auch SharePoint -API -Berechtigungen mit vollem Site -Steuerelement wurden gegeben, einschließlich vertrauenswürdiger die App über Appinv.aspx . Sie werden immer noch 401 nicht autorisierter Fehler. Die gleiche Ausführungsabfrage funktioniert gut für die Client -ID, Zertifikatskombination. Aber nicht für Client-ID und Geheimnis arbeiten.static void Main(string[] args)
{
var authManager = new AuthenticationManager("***************************", "C:\\Program Files\\OpenSSL-Win64\\bin\\certificate.pfx", "*******", "********.onmicrosoft.com");
using (var cc = authManager.GetContext("https://****.sharepoint.com/sites/****"))
{
cc.Load(cc.Web, p => p.Title);
cc.ExecuteQuery();
Console.WriteLine(cc.Web.Title);
ListCollection listCollection = cc.Web.Lists;
cc.ExecuteQuery(); // this is working fine
}
;
// Replace with your SharePoint Online details
string siteUrl = "****************************";
string tenantId = "***************************";
string clientId = "********************************";
string clientSecret = "******************************"; // App secret

try
{
using (var context = GetClientContextWithOAuth(siteUrl, tenantId, clientId, clientSecret))
{
// Example: Retrieve web title
Web web = context.Web;
context.Load(web, w => w.Title);
context.ExecuteQuery(); // this is throwing 401 unauthorized error

Console.WriteLine("Connected to: " + web.Title);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}

private static ClientContext GetClientContextWithOAuth(string siteUrl, string tenantId, string clientId, string clientSecret)
{
// Azure AD OAuth 2.0 endpoint
string authority = $"https://login.microsoftonline.com/*******************";

// Use MSAL to acquire an access token
var app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri(authority))
.Build();

var authResult = app.AcquireTokenForClient(new[] { $"{siteUrl}/.default" }).ExecuteAsync().Result;

if (authResult == null)
{
throw new Exception("Failed to acquire the access token.");
}

// Use the access token to authenticate the ClientContext
var context = new ClientContext(siteUrl);
context.ExecutingWebRequest += (sender, e) =>
{
e.WebRequestExecutor.WebRequest.Headers["Authorization"] = "Bearer " + authResult.AccessToken;
};

return context;
}
< /code>
Ich habe die SharePoint -Verbindung mit Client -ID und Zertifikatskombination ausprobiert. Dafür funktioniert es gut>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post