Last active
December 11, 2019 03:45
-
-
Save csnowbar/cbc2eab7e94aa8544dddc534d85d23bf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Minimal sample using ADAL.JS</title> | |
<meta charset="utf-8" /> | |
<style type="text/css">body { font-family: Tahoma; padding: 3em; }</style> | |
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.11/js/adal.min.js"></script> | |
</head> | |
<body> | |
<p> | |
A minimal sample app using ADAL.JS and vanilla JavaScript to obtain | |
an access token from Azure Active Directory and make an API request. | |
</p> | |
<p> | |
<a href="#" onclick="authContext.login(); return false;">Log in</a> | | |
<a href="#" onclick="authContext.logOut(); return false;">Log out</a> | |
</p> | |
<p id="username"></p> | |
<pre id="api_response"></pre> | |
<script type="text/javascript"> | |
// Set up ADAL | |
var authContext = new AuthenticationContext({ | |
clientId: '5408523f-5a48-464c-a7fd-ea2f93acac14', | |
postLogoutRedirectUri: 'http://bl.ocks.org/csnowbar/raw/cbc2eab7e94aa8544dddc534d85d23bf/' | |
}); | |
// Make an AJAX request to the Microsoft Graph API and print the response as JSON. | |
var getCurrentUser = function (access_token) { | |
document.getElementById('api_response').textContent = 'Calling API...'; | |
var xhr = new XMLHttpRequest(); | |
xhr.open('GET', 'https://graph.microsoft.com/v1.0/me', true); | |
xhr.setRequestHeader('Authorization', 'Bearer ' + access_token); | |
xhr.onreadystatechange = function () { | |
if (xhr.readyState === 4 && xhr.status === 200) { | |
// Do something with the response | |
document.getElementById('api_response').textContent = | |
JSON.stringify(JSON.parse(xhr.responseText), null, ' '); | |
} else { | |
// TODO: Do something with the error (or non-200 responses) | |
document.getElementById('api_response').textContent = | |
'ERROR:\n\n' + xhr.responseText; | |
} | |
}; | |
xhr.send(); | |
} | |
if (authContext.isCallback(window.location.hash)) { | |
// Handle redirect after token requests | |
authContext.handleWindowCallback(); | |
var err = authContext.getLoginError(); | |
if (err) { | |
// TODO: Handle errors signing in and getting tokens | |
document.getElementById('api_response').textContent = | |
'ERROR:\n\n' + err; | |
} | |
} else { | |
// If logged in, get access token and make an API request | |
var user = authContext.getCachedUser(); | |
if (user) { | |
document.getElementById('username').textContent = 'Signed in as: ' + user.userName; | |
document.getElementById('api_response').textContent = 'Getting access token...'; | |
// Get an access token to the Microsoft Graph API | |
authContext.acquireToken( | |
'https://graph.microsoft.com', | |
function (error, token) { | |
if (error || !token) { | |
// TODO: Handle error obtaining access token | |
document.getElementById('api_response').textContent = | |
'ERROR:\n\n' + error; | |
return; | |
} | |
// Use the access token | |
getCurrentUser(token); | |
} | |
); | |
} else { | |
document.getElementById('username').textContent = 'Not signed in.'; | |
} | |
} | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment