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.