Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
amanmuska
New Member

Power BI Salesforce Integration

Hi @all

 

I have developed an api to interact with power bi to show the report in Salesforce. I a getting following exception.

 

{
    "error": {
        "code": "PowerBINotAuthorizedException",
        "pbi.error": {
            "code": "PowerBINotAuthorizedException",
            "parameters": {},
            "details": [],
            "exceptionCulprit": 1
        }
    }
}
 
Steps I followed:
1.Created a azure application with following permissions.
 
amanmuska_0-1704863505523.png

2. Anyone can access the API in Power BI tenant settings.

3. I am getting access token using following code.

 

Power_BI_Auth_Settings__mdt authSetting = Power_BI_Auth_Settings__mdt.getInstance('PowerBiApp');
string TenantId = authSetting.TenantId__c;
string ClientId = authSetting.ClientId__c;
string ClientSecret = authSetting.ClientSecret__c;

// construct URL for client credentials flow
String aadTokenEndpoint = 'https://login.microsoftonline.com/' + TenantId + '/oauth2/v2.0/token';

// prepare HTTP request
HttpRequest reqClientCredentialsFlow = new HttpRequest();
reqClientCredentialsFlow.setMethod('POST');
reqClientCredentialsFlow.setEndpoint(aadTokenEndpoint);
reqClientCredentialsFlow.setHeader('Content-Type', 'application/x-www-form-urlencoded');

// compose data for POST body
ClientCredentialPostData postData = new ClientCredentialPostData();
postData.client_id = ClientId;
postData.client_info = '1';
postData.client_secret = ClientSecret;
postData.scope = 'https://analysis.windows.net/powerbi/api/.default';
postData.grant_type = 'client_credentials';
String postBody = postData.getPostData();
reqClientCredentialsFlow.setBody(postBody);

// send HTTP POST to execute client credentials flow
Http http = new Http();
HttpResponse response = http.send(reqClientCredentialsFlow);

// extract and return app-only access token for service principal
String responseJson = response.getBody();
ClientCredentialResponse responseData = (ClientCredentialResponse)JSON.deserialize(responseJson, ClientCredentialResponse.class);
String access_token = responseData.access_token;
return access_token;
}

 

4. But when I am accessing https://api.powerbi.com/v1.0/myorg/groups/' + WorkspaceId + '/reports , I am getting the error mentioned above.

 

// get access token for Authorization header
String access_token = getPowerBiAccessToken();

// Call to Power BI Service API to get report data for embedding
HttpRequest reqGetReport = new HttpRequest();
reqGetReport.setMethod('GET');
String urlGetReport = 'https://api.powerbi.com/v1.0/myorg/groups/' + WorkspaceId + '/reports';
reqGetReport.setEndpoint(urlGetReport);
reqGetReport.setHeader('Authorization', 'Bearer ' + access_token);
Http http = new Http();
HttpResponse response = http.send(reqGetReport);

System.debug(response.getBody());



// check response for success
if(response.getStatusCode()!=200){
System.debug('ERROR --- Getting Report Data --- ERROR');
System.debug('Status Code: ' + response.getStatusCode());
PowerBiReportData getReportError = new PowerBiReportData();
getReportError.error = 'Get Report Error: ' + response.getStatus();
return getReportError;
}

 

Please help into this. I have tried everything from my side. May be this can help to others as well.

 

Thanks,

Aman Muskan

2 REPLIES 2
amanmuska
New Member

@Anonymous Ya its correct. I was missing the workspace access for the created azure app. Reports are coming but App access I am not getting. I am using https://api.powerbi.com/v1.0/myorg/apps. Can I get a whole application from Power Bi using this API ?

 

Please comment once.

1. I have given App.Read.All and Group.Read.All and its showing  "API is not accessible for application".

Anonymous
Not applicable

HI @amanmuska,

AFIAK, PowerBINotAuthorizedException is an error message that displayed when you don’t have the proper permissions to perform an action in Power BI.

For this scenario, you may need to double check on the pension and correspond scope settings of assign suitable permission instead directly assign all type and level of permissions. (sometime these different level permissions may conflict and effect the feature usages)

Regards,

Xiaoxin Sheng

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.