|

|  How to Access Microsoft Graph API to Manage OneDrive Files in C#

How to Access Microsoft Graph API to Manage OneDrive Files in C#

October 31, 2024

Learn to access Microsoft's Graph API to manage OneDrive files using C#. Step-by-step guide for seamless integration, API access, and file handling.

How to Access Microsoft Graph API to Manage OneDrive Files in C#

 

Install Required Libraries

 

  • Use the Microsoft.Graph NuGet package to interact with the Microsoft Graph API. Install it using the NuGet Package Manager Console in Visual Studio with the following command:

 

Install-Package Microsoft.Graph

 

Register Your Application and Get Authentication Token

 

  • Implement authentication using an appropriate OAuth 2.0 library, such as `Microsoft.Identity.Client` (MSAL). This library helps to obtain an authentication token to grant access to the API.
  • Install the MSAL package:

 

Install-Package Microsoft.Identity.Client

 

  • Create an instance of `PublicClientApplication` to manage user authentication and token acquisition. Ensure your application is registered in Azure AD and has the proper delegated permissions for accessing OneDrive files.

 

var clientId = "YOUR_CLIENT_ID";
var tenantId = "YOUR_TENANT_ID";
var clientApp = PublicClientApplicationBuilder.Create(clientId)
    .WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
    .WithDefaultRedirectUri()
    .Build();

string[] scopes = { "Files.ReadWrite.All" };

 

Acquire Access Tokens

 

  • Implement the logic to acquire an OAuth token. This typically involves prompting the user for their credentials the first time and caching the token for future use.

 

AuthenticationResult authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();

 

Initialize Graph Client

 

  • Use the token from the authentication process to authenticate requests to the Microsoft Graph API by creating a client instance.

 

var graphClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) =>
{
    requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("bearer", authResult.AccessToken);
    return Task.CompletedTask;
}));

 

Perform File Operations on OneDrive

 

  • Use the `graphClient` to perform OneDrive actions like uploading, downloading, listing, and deleting files.
  • Example: Upload a file to OneDrive:

 

using var fileStream = new FileStream("path/to/your/file.txt", FileMode.Open);
await graphClient.Me.Drive.Root.ItemWithPath("/file.txt").Content.Request().PutAsync<DriveItem>(fileStream);

 

  • Example: Download a file from OneDrive:

 

var fileStream = await graphClient.Me.Drive.Items["fileId"].Content.Request().GetAsync();
using (var file = new FileStream("downloaded_file.txt", FileMode.Create))
{
    fileStream.CopyTo(file);
}

 

  • Example: List files in the root directory:

 

var driveItems = await graphClient.Me.Drive.Root.Children.Request().GetAsync();
foreach (var item in driveItems)
{
    Console.WriteLine(item.Name);
}

 

Handle Exceptions and Errors

 

  • Implement proper error handling mechanisms to handle issues like network connectivity problems, authentication failures, and permission errors.
  • Use try-catch blocks around API calls to gracefully handle exceptions and give informative error messages to the user.

 

try
{
    // Your API call here
}
catch (ServiceException ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}

 

Keep Tokens Secure

 

  • Avoid hardcoding sensitive information like access tokens or client credentials. Instead, use secure methods such as Azure Key Vault, environment variables, or configuration files with proper encryption.

 

Limited Beta: Claim Your Dev Kit and Start Building Today

Instant transcription

Access hundreds of community apps

Sync seamlessly on iOS & Android

Order Now

Turn Ideas Into Apps & Earn Big

Build apps for the AI wearable revolution, tap into a $100K+ bounty pool, and get noticed by top companies. Whether for fun or productivity, create unique use cases, integrate with real-time transcription, and join a thriving dev community.

Get Developer Kit Now