Hey there, fellow JavaScript devs! Ready to dive into the world of OneDrive API integration? Let's get our hands dirty with some code and learn how to sync data for user-facing applications. Buckle up!
First things first, let's get our ducks in a row. Head over to the Azure Portal and register your app. You'll need to grab your client ID and secret – think of them as your API's VIP pass.
const clientId = 'your-client-id'; const clientSecret = 'your-client-secret';
Now, let's tackle authentication. We're using OAuth 2.0, so here's a quick snippet to get your access token:
const getAccessToken = async () => { const response = await fetch('https://login.microsoftonline.com/common/oauth2/v2.0/token', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ client_id: clientId, scope: 'files.readwrite', code: authorizationCode, redirect_uri: redirectUri, grant_type: 'authorization_code', client_secret: clientSecret }) }); const data = await response.json(); return data.access_token; };
Time to read some data! Here's how you can fetch a file's contents:
const readFile = async (accessToken, fileId) => { const response = await fetch(`https://graph.microsoft.com/v1.0/me/drive/items/${fileId}/content`, { headers: { 'Authorization': `Bearer ${accessToken}` } }); return await response.text(); };
Writing data is just as easy. Check this out:
const writeFile = async (accessToken, fileName, content) => { const response = await fetch(`https://graph.microsoft.com/v1.0/me/drive/root:/${fileName}:/content`, { method: 'PUT', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'text/plain' }, body: content }); return await response.json(); };
For efficient syncing, delta queries are your best friend. Here's a taste:
const getDeltaLink = async (accessToken) => { const response = await fetch('https://graph.microsoft.com/v1.0/me/drive/root/delta', { headers: { 'Authorization': `Bearer ${accessToken}` } }); const data = await response.json(); return data['@odata.deltaLink']; };
Always expect the unexpected! Handle rate limiting like a pro:
const handleRateLimit = (response) => { if (response.status === 429) { const retryAfter = response.headers.get('Retry-After'); return new Promise(resolve => setTimeout(resolve, retryAfter * 1000)); } return Promise.resolve(); };
Want to upload large files? Here's a teaser:
const uploadLargeFile = async (accessToken, fileName, fileContent) => { // Create upload session const sessionResponse = await fetch(`https://graph.microsoft.com/v1.0/me/drive/root:/${fileName}:/createUploadSession`, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}` } }); const session = await sessionResponse.json(); // Upload file in chunks // ... (implement chunked upload logic here) };
And there you have it! You're now equipped to read, write, and sync data like a OneDrive API ninja. Remember, practice makes perfect, so keep coding and exploring. The OneDrive API documentation is your trusty sidekick for more advanced scenarios.
Happy coding, and may your integrations be ever smooth and your data always in sync!