Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredJoin us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM. Register now.
Hello
I was just wondering if it's possible to get access token using js?? If yes would be possible show me sample
var getAccessToken = function () {
return new Promise(function (resolve, reject) {
var url = 'https://login.microsoftonline.com/common/oauth2/token';
var username = 'login'; // Username of PowerBI "pro" account - stored in config
var password = 'password'; // Password of PowerBI "pro" account - stored in config
var clientId ='id' // Applicaton ID of app registered via Azure Active Directory - stored in config
var headers = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var formData = {
grant_type: 'password',
client_id: clientId,
resource: 'https://analysis.windows.net/powerbi/api',
scope: 'openid',
username: username,
password: password
};
console.log(request.post)
request.post({
url: url,
form: formData,
headers: headers
}, function (err, result, body) {
console.log(result);
})
});
}This what I tried to make but I alsway has problem
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://login.microsoftonline.com/common/oauth2/token. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
I tried to add it on head for my post query but it's still doesnt work
Solved! Go to Solution.
Hi @oflok000,
Based on my research, you may need to use the ADAL.js to get the access_token in pure js code. Here is a similar thread for your reference. ![]()
Sample Code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.12/js/adal.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: 'common', //COMMON OR YOUR TENANT ID
clientId: '49df1bc7-db68-4fb4-91c0-6d93f770d1a4', //This is your client ID
redirectUri: 'https://login.live.com/oauth20_desktop.srf', //This is your redirect URI
callback: userSignedIn,
popUp: true
};
var ADAL = new AuthenticationContext(config);
function signIn() {
ADAL.login();
}
function userSignedIn(err, token) {
console.log('userSignedIn called');
if (!err) {
showWelcomeMessage();
ADAL.acquireToken("https://analysis.windows.net/powerbi/api", function (error, token) {
// Handle ADAL Error
if (error || !token) {
printErrorMessage('ADAL Error Occurred: ' + error);
return;
}
// Get TodoList Data
$.ajax({
type: "GET",
url: "https://api.powerbi.com/v1.0/myorg/datasets",
headers: {
'Authorization': 'Bearer ' + token,
},
}).done(function (data) {
console.log(data);
// Update the UI
$loading.hide();
}).fail(function () {
printErrorMessage('Error getting todo list data')
}).always(function () {
// Register Handlers for Buttons in Data Table
registerDataClickHandlers();
});
});
}
else {
console.error("error: " + err);
}
}
function getDataSets(){
var trythis = "Bearer " + token;
var request = new XMLHttpRequest();
request.open('GET', 'https://api.powerbi.com/v1.0/myorg/datasets');
request.setRequestHeader('Authorization', trythis);
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Body:', this.responseText);
}
};
request.send();
}
function showWelcomeMessage() {
var user = ADAL.getCachedUser();
var divWelcome = document.getElementById('WelcomeMessage');
divWelcome.innerHTML = "Welcome " + user.profile.name;
}
</script>
</head>
<body>
<button id="SignIn" onclick="signIn()">Sign In</button>
<h4 id="WelcomeMessage"></h4>
</body>
</html>
Regards
This looks like not working anymore. Does anyone have a solution to use msal or adal in order to connect to powerbi api ? How can I get a powerbi token like I would do for OneDrive ?
Were you able to find any solution for generating embed token using javascript?
If yes please post here, I am looking for the same thing.
Hi @oflok000,
Based on my research, you may need to use the ADAL.js to get the access_token in pure js code. Here is a similar thread for your reference. ![]()
Sample Code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title></title>
<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.12/js/adal.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
window.config = {
instance: 'https://login.microsoftonline.com/',
tenant: 'common', //COMMON OR YOUR TENANT ID
clientId: '49df1bc7-db68-4fb4-91c0-6d93f770d1a4', //This is your client ID
redirectUri: 'https://login.live.com/oauth20_desktop.srf', //This is your redirect URI
callback: userSignedIn,
popUp: true
};
var ADAL = new AuthenticationContext(config);
function signIn() {
ADAL.login();
}
function userSignedIn(err, token) {
console.log('userSignedIn called');
if (!err) {
showWelcomeMessage();
ADAL.acquireToken("https://analysis.windows.net/powerbi/api", function (error, token) {
// Handle ADAL Error
if (error || !token) {
printErrorMessage('ADAL Error Occurred: ' + error);
return;
}
// Get TodoList Data
$.ajax({
type: "GET",
url: "https://api.powerbi.com/v1.0/myorg/datasets",
headers: {
'Authorization': 'Bearer ' + token,
},
}).done(function (data) {
console.log(data);
// Update the UI
$loading.hide();
}).fail(function () {
printErrorMessage('Error getting todo list data')
}).always(function () {
// Register Handlers for Buttons in Data Table
registerDataClickHandlers();
});
});
}
else {
console.error("error: " + err);
}
}
function getDataSets(){
var trythis = "Bearer " + token;
var request = new XMLHttpRequest();
request.open('GET', 'https://api.powerbi.com/v1.0/myorg/datasets');
request.setRequestHeader('Authorization', trythis);
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Body:', this.responseText);
}
};
request.send();
}
function showWelcomeMessage() {
var user = ADAL.getCachedUser();
var divWelcome = document.getElementById('WelcomeMessage');
divWelcome.innerHTML = "Welcome " + user.profile.name;
}
</script>
</head>
<body>
<button id="SignIn" onclick="signIn()">Sign In</button>
<h4 id="WelcomeMessage"></h4>
</body>
</html>
Regards
Hi,
I would like to get the accesToken of a client.
I have his username, his password and the link for an emebbed report.
this is my link : https://app.powerbi.com/groups/me/reports/my-report-id?ctid=my-client-id
So with all these informations, can i get the access token so i can embed the report on my own ?
I tried to use the javascript's code of "v-ljerr-msft" but it doesn't work with my clientId.
I get this error :
I'm trying to get this flow working myself, so take my advice with a grain of salt, but it appears you have a wrong combination of tenant ID and client ID. Try using just "common" instead of the tenant ID
Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!
Check out the October 2025 Power BI update to learn about new features.