Join 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!Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote now!
I've working on the sample "Push data into a dashboard" by Adam Saxton. In Step 2: Get an authentication access token code is provided to get authentication. The NuGet Package Microsoft.IdentityModel.Clients.ActiveDirectory is now updated to version 3.13.8 and I get an error on the codeline "string token = authContext.AcquireToken(resourceUri, clientID, new Uri(redirectUri)).AccessToken; : Severity Code Description Project File Line Suppression State
Error CS1061 'AuthenticationContext' does not contain a definition for 'AcquireToken' and no extension method 'AcquireToken' accepting a first argument of type 'AuthenticationContext' could be found (are you missing a using directive or an assembly reference?)
Can anyone provide me with the correct code-statement to be used here ? I"ve tried a few attempts myself, but couldn't figure it out...
Any help is much appriciated!
Ruud
Solved! Go to Solution.
In the sample, steps 2 is using
Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
In the newer ADAL v3, try a new sample
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication32
{
class Program
{
static void Main(string[] args)
{
string token = GetToken();
Console.WriteLine(token);
Console.ReadLine();
}
#region Get an authentication access token
private static string GetToken()
{
// TODO: Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
// and add using Microsoft.IdentityModel.Clients.ActiveDirectory
//The client id that Azure AD created when you registered your client app.
string clientID = "3f756axxxxxxx3662e";
//RedirectUri you used when you register your app.
//For a client app, a redirect uri gives Azure AD more details on the application that it will authenticate.
// You can use this redirect uri for your client app
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
//Resource Uri for Power BI API
string resourceUri = "https://analysis.windows.net/powerbi/api";
//OAuth2 authority Uri
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
//Get access token:
// To call a Power BI REST operation, create an instance of AuthenticationContext and call AcquireToken
// AuthenticationContext is part of the Active Directory Authentication Library NuGet package
// To install the Active Directory Authentication Library NuGet package in Visual Studio,
// run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.
// AcquireToken will acquire an Azure access token
// Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
//string token = authContext.AcquireToken(resourceUri, clientID, new Uri(redirectUri)).AccessToken;
return authContext.AcquireTokenAsync(resourceUri, clientID, new Uri(redirectUri), new PlatformParameters(0)).Result.AccessToken;
}
#endregion
}
}
Hi All,
I'm stuck in Step 2.
Here's what I did.
Using Visual Studio 2017
Console App > .NET Framework 4.5 > (.Net Framework) Visual C#
Iin Package Manager Console , entered this: Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
Entered this code in Program.cs
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication32
{
class Program
{
static void Main(string[] args)
{
string token = GetToken();
Console.WriteLine(token);
Console.ReadLine();
}
#region Get an authentication access token
private static string GetToken()
{
// TODO: Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
// and add using Microsoft.IdentityModel.Clients.ActiveDirectory
//The client id that Azure AD created when you registered your client app.
string clientID = "f57471a3-066b-47a4-92b5-30177196d891";
//RedirectUri you used when you register your app.
//For a client app, a redirect uri gives Azure AD more details on the application that it will authenticate.
// You can use this redirect uri for your client app
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
//Resource Uri for Power BI API
string resourceUri = "https://analysis.windows.net/powerbi/api";
//OAuth2 authority Uri
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
//Get access token:
// To call a Power BI REST operation, create an instance of AuthenticationContext and call AcquireToken
// AuthenticationContext is part of the Active Directory Authentication Library NuGet package
// To install the Active Directory Authentication Library NuGet package in Visual Studio,
// run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.
// AcquireToken will acquire an Azure access token
// Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
//string token = authContext.AcquireToken(resourceUri, clientID, new Uri(redirectUri)).AccessToken;
return authContext.AcquireTokenAsync(resourceUri, clientID, new Uri(redirectUri), new PlatformParameters(0)).Result.AccessToken;
}
#endregion
}
}
Got this when trying to debug: ConsoleApp1.exe is missing. Please build the probject and retry, or set the OutPath and AssemblyName properties appropriately to point at the correct location for target assembly.
And in error list:
Code - CS0246
Description - The type or namespace name 'PlatformParameters' could not be found ( are you missing a using directive or an assembly reference)?
By the way, I'm a complete noob to visual studio. I've just been trying to push data to Power BI with no success.
I'm using Excel 2013 Standard - which doesnt come with Power Pivot.
Have you figured this out? I'm getting the same error.
Hi,
Below the code of all the steps. This is slightly different from the example and was partly given by the moderator.
Hope this works for you: don't forget to enter your Azure AD in this code-lines.
Ruud.
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using Newtonsoft.Json;
namespace ConsoleApplication_PowerBI_02
{
class Program
{
private static string token = string.Empty;
static void Main(string[] args)
{
string token = GetToken();
Console.WriteLine(token);
//Console.ReadLine();
//Create a dataset in a Power BI dashboard
CreateDataset();
//Get a dataset to add rows into a Power BI table
string datasetId = GetDataset();
//Add rows to a Power BI table
AddRows(datasetId, "Product");
}
#region Get an authentication access token
private static string GetToken()
{
// TODO: Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
// and add using Microsoft.IdentityModel.Clients.ActiveDirectory
//The client id that Azure AD created when you registered your client app.
string clientID = "ENTER YOUR AZURE AD CODE HERE";
//RedirectUri you used when you register your app.
//For a client app, a redirect uri gives Azure AD more details on the application that it will authenticate.
// You can use this redirect uri for your client app
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
//Resource Uri for Power BI API
string resourceUri = "https://analysis.windows.net/powerbi/api";
//OAuth2 authority Uri
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
//Get access token:
// To call a Power BI REST operation, create an instance of AuthenticationContext and call AcquireToken
// AuthenticationContext is part of the Active Directory Authentication Library NuGet package
// To install the Active Directory Authentication Library NuGet package in Visual Studio,
// run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.
// AcquireToken will acquire an Azure access token
// Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
//string token = authContext.AcquireToken(resourceUri, clientID, new Uri(redirectUri)).AccessToken;
return authContext.AcquireTokenAsync(resourceUri, clientID, new Uri(redirectUri), new PlatformParameters(0)).Result.AccessToken;
}
#endregion
#region Create a dataset in a Power BI dashboard
private static void CreateDataset()
{
//TODO: Add using System.Net and using System.IO
//Push data into a Power BI dashboard
string powerBIDatasetsApiUrl = "https://api.powerbi.com/v1.0/myorg/datasets";
//POST web request to create a dataset.
//To create a Dataset in a group, use the Groups uri: https://api.PowerBI.com/v1.0/myorg/groups/{group_id}/datasets
HttpWebRequest request = System.Net.WebRequest.Create(powerBIDatasetsApiUrl) as System.Net.HttpWebRequest;
request.KeepAlive = true;
request.Method = "POST";
request.ContentLength = 0;
request.ContentType = "application/json";
//Add token to the request header
request.Headers.Add("Authorization", String.Format("Bearer {0}", GetToken()));
//Create dataset JSON for POST request
string datasetJson = "{\"name\": \"SalesMarketing\", \"tables\": " +
"[{\"name\": \"Product\", \"columns\": " +
"[{ \"name\": \"ProductID\", \"dataType\": \"Int64\"}, " +
"{ \"name\": \"Name\", \"dataType\": \"string\"}, " +
"{ \"name\": \"Category\", \"dataType\": \"string\"}," +
"{ \"name\": \"IsCompete\", \"dataType\": \"bool\"}," +
"{ \"name\": \"ManufacturedOn\", \"dataType\": \"DateTime\"}" +
"]}]}";
//POST web request
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(datasetJson);
request.ContentLength = byteArray.Length;
//Write JSON byte[] into a Stream
using (Stream writer = request.GetRequestStream())
{
writer.Write(byteArray, 0, byteArray.Length);
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(string.Format("Dataset {0}", response.StatusCode.ToString()));
//Console.ReadLine();
}
}
#endregion
#region Get a dataset to add rows into a Power BI table
private static string GetDataset()
{
string powerBIDatasetsApiUrl = "https://api.powerbi.com/v1.0/myorg/datasets";
//POST web request to create a dataset.
//To create a Dataset in a group, use the Groups uri: https://api.PowerBI.com/v1.0/myorg/groups/{group_id}/datasets
HttpWebRequest request = System.Net.WebRequest.Create(powerBIDatasetsApiUrl) as System.Net.HttpWebRequest;
request.KeepAlive = true;
request.Method = "GET";
request.ContentLength = 0;
request.ContentType = "application/json";
//Add token to the request header
request.Headers.Add("Authorization", String.Format("Bearer {0}", GetToken()));
string datasetId = string.Empty;
//Get HttpWebResponse from GET request
using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse)
{
//Get StreamReader that holds the response stream
using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
{
string responseContent = reader.ReadToEnd();
//TODO: Install NuGet Newtonsoft.Json package: Install-Package Newtonsoft.Json
//and add using Newtonsoft.Json
var results = JsonConvert.DeserializeObject<dynamic>(responseContent);
//Get the first id
//datasetId = results["value"][0]["id"];
//Get the first id
//datasetId = results["value"][0]["id"];
var datasets = results["value"];
foreach (var ds in datasets)
{
//return the id of the first salesmarketing dataset
if (ds["name"] == "SalesMarketing")
{
datasetId = ds["id"];
break;
}
}
Console.WriteLine(String.Format("Dataset ID: {0}", datasetId));
//Console.ReadLine();
return datasetId;
}
}
}
#endregion
#region Add rows to a Power BI table
private static void AddRows(string datasetId, string tableName)
{
string powerBIApiAddRowsUrl = String.Format("https://api.powerbi.com/v1.0/myorg/datasets/{0}/tables/{1}/rows", datasetId, tableName);
//POST web request to add rows.
//To add rows to a dataset in a group, use the Groups uri: https://api.powerbi.com/v1.0/myorg/groups/{group_id}/datasets/{dataset_id}/tables/{table_name}/rows
//Change request method to "POST"
HttpWebRequest request = System.Net.WebRequest.Create(powerBIApiAddRowsUrl) as System.Net.HttpWebRequest;
request.KeepAlive = true;
request.Method = "POST";
request.ContentLength = 0;
request.ContentType = "application/json";
//Add token to the request header
request.Headers.Add("Authorization", String.Format("Bearer {0}", GetToken()));
//JSON content for product row
string rowsJson = "{\"rows\":" +
"[{\"ProductID\":1,\"Name\":\"Adjustable Race\",\"Category\":\"Components\",\"IsCompete\":true,\"ManufacturedOn\":\"07/30/2014\"}," +
"{\"ProductID\":2,\"Name\":\"LL Crankarm\",\"Category\":\"Components\",\"IsCompete\":true,\"ManufacturedOn\":\"07/30/2014\"}," +
"{\"ProductID\":3,\"Name\":\"HL Mountain Frame - Silver\",\"Category\":\"Bikes\",\"IsCompete\":true,\"ManufacturedOn\":\"07/30/2014\"}]}";
//POST web request
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(rowsJson);
request.ContentLength = byteArray.Length;
//Write JSON byte[] into a Stream
using (Stream writer = request.GetRequestStream())
{
writer.Write(byteArray, 0, byteArray.Length);
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Rows Added");
//Console.ReadLine();
}
}
#endregion
}
}
In the sample, steps 2 is using
Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
In the newer ADAL v3, try a new sample
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication32
{
class Program
{
static void Main(string[] args)
{
string token = GetToken();
Console.WriteLine(token);
Console.ReadLine();
}
#region Get an authentication access token
private static string GetToken()
{
// TODO: Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
// and add using Microsoft.IdentityModel.Clients.ActiveDirectory
//The client id that Azure AD created when you registered your client app.
string clientID = "3f756axxxxxxx3662e";
//RedirectUri you used when you register your app.
//For a client app, a redirect uri gives Azure AD more details on the application that it will authenticate.
// You can use this redirect uri for your client app
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
//Resource Uri for Power BI API
string resourceUri = "https://analysis.windows.net/powerbi/api";
//OAuth2 authority Uri
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
//Get access token:
// To call a Power BI REST operation, create an instance of AuthenticationContext and call AcquireToken
// AuthenticationContext is part of the Active Directory Authentication Library NuGet package
// To install the Active Directory Authentication Library NuGet package in Visual Studio,
// run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.
// AcquireToken will acquire an Azure access token
// Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
//string token = authContext.AcquireToken(resourceUri, clientID, new Uri(redirectUri)).AccessToken;
return authContext.AcquireTokenAsync(resourceUri, clientID, new Uri(redirectUri), new PlatformParameters(0)).Result.AccessToken;
}
#endregion
}
}
Hi,
I got as far as the last step in this example: adding rows to the dataset.
Greated the token, created the dataset en got back the datasetID.
When adding the rows I got the error-message in Visual Studio on the code-line
var response = (HttpWebResponse)request.GetResponse();
:
"An unhandled exception of type 'System.Net.WebException' occurred in System.dll
Additional information: De externe server heeft een fout geretourneerd: (404) Niet gevonden."
Can someone help me out on this ?
Console-screenshot
Regards, Ruud
Try refreshing your pbix manually. If doing so returns an error which do not allow the Power Query data to be loaded into the model, you'll need to fix that. Mine was due to relationship error as one of the columns that was supposed to have unique values suddenly contained duplicates. Relationship requires one of the columns to have unique values.
Check the answer in your new post.
Thanks very much for your help! It worked !!
Vote for your favorite vizzies from the Power BI World Championship submissions!
If you love stickers, then you will definitely want to check out our Community Sticker Challenge!
Check out the January 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 |
| User | Count |
|---|---|
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 |