|

|  How to Integrate Microsoft SharePoint API to Manage Documents in C#

How to Integrate Microsoft SharePoint API to Manage Documents in C#

October 31, 2024

Learn to integrate Microsoft SharePoint API with C# for seamless document management. Follow our step-by-step guide to boost your productivity today!

How to Integrate Microsoft SharePoint API to Manage Documents in C#

 

Integrate SharePoint API with C#

 

  • Before diving into code, understand the basic principles of interacting with the SharePoint API and OAuth for authentication.
  • This guide assumes you have the necessary permissions set up on your SharePoint site and are ready to implement the integration.

 

Set Up Authentication

 

  • To connect to the SharePoint API from C#, you'll need to authenticate using OAuth. Acquire an access token using the Microsoft.Identity.Client library.
var app = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithClientSecret(clientSecret)
    .WithTenantId(tenantId)
    .Build();
var scopes = new string[] { "https://graph.microsoft.com/.default" };
var authResult = await app.AcquireTokenForClient(scopes).ExecuteAsync();

 

Establish a Connection to SharePoint

 

  • Once authenticated, you can interact with the SharePoint Online services. Use the HttpClient to make HTTP requests to the SharePoint REST API.
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
    client.BaseAddress = new Uri("https://yourtenant.sharepoint.com/sites/yoursite/_api/");
    // Use client to interact with SharePoint.
}

 

Manage Documents

 

  • To manage documents, use SharePoint REST API endpoints. For example, to upload a document.
var fileData = File.ReadAllBytes("path/to/file.docx");
var content = new ByteArrayContent(fileData);

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
    client.BaseAddress = new Uri("https://yourtenant.sharepoint.com/sites/yoursite/_api/web/GetFolderByServerRelativeUrl('/sites/yoursite/Shared Documents')/Files/add(url='file.docx',overwrite=true)");

    var request = await client.PostAsync("files/add(url='file.docx',overwrite=true)", content);
    if (request.IsSuccessStatusCode)
    {
        Console.WriteLine("File uploaded successfully!");
    }
}

 

Read and List Documents

 

  • To list documents or read specific document properties, use the GET method on the appropriate endpoint.
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
    var response = await client.GetAsync("web/GetFolderByServerRelativeUrl('/sites/yoursite/Shared Documents')/Files");

    if (response.IsSuccessStatusCode)
    {
        var result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result); // Outputs JSON listing the documents.
    }
}

 

Update Documents

 

  • If you want to update metadata or properties of a document, use the MERGE method in an HTTP request.
var payload = new StringContent("{ '__metadata': { 'type': 'SP.Data.DocumentsItem' }, 'Title': 'Updated Title' }", Encoding.UTF8, "application/json");

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
    client.DefaultRequestHeaders.Add("IF-MATCH", "*");
    var requestMessage = new HttpRequestMessage(new HttpMethod("MERGE"), "web/lists/getbytitle('Documents')/items(1)");
    requestMessage.Content = payload;
    
    var response = await client.SendAsync(requestMessage);
    if (response.IsSuccessStatusCode)
    {
        Console.WriteLine("Document updated successfully!");
    }
}

 

Delete Documents

 

  • To delete a document, send a DELETE request to the specific file endpoint in the SharePoint library.
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
    client.DefaultRequestHeaders.Add("IF-MATCH", "*");
    var requestMessage = new HttpRequestMessage(HttpMethod.Delete, "web/GetFileByServerRelativeUrl('/sites/yoursite/Shared Documents/file.docx')");
    
    var response = await client.SendAsync(requestMessage);
    if (response.IsSuccessStatusCode)
    {
        Console.WriteLine("Document deleted successfully!");
    }
}

 

  • These code examples provide a basis for interacting with SharePoint in C#. It's crucial to handle exceptions and ensure that you comply with your organization’s security practices when implementing document management solutions.