Heim >Web-Frontend >js-Tutorial >Einbetten eines Power BI-Dashboards: Eine sichere und einfache Lösung
Das Einbetten von Power BI-Dashboards in eine Webanwendung ist eine leistungsstarke Möglichkeit, Erkenntnisse sicher mit Benutzern zu teilen. In diesem Tutorial führe ich Sie durch die Schritte zum Einrichten einer Basislösung mit Express für das Backend und React für das Frontend und behandle dabei wichtige Konfigurationen in Azure und Power BI.
Um Power BI-Berichte einzubetten, müssen Sie eine App in Azure Active Directory registrieren:
Antrag registrieren:
API-Berechtigungen:
Kundengeheimnis:
Einbettungs-Token-Generierung aktivieren:
Arbeitsbereichszugriff zuweisen:
Dashboard-/Berichts-IDs erhalten:
Das Backend ist für die Generierung eines eingebetteten Tokens für das Dashboard verantwortlich.
Abhängigkeiten installieren:
npm install express axios dotenv
Backend-Code:
const express = require('express'); const axios = require('axios'); const dotenv = require('dotenv'); dotenv.config(); const app = express(); app.use(express.json()); // Environment variables from .env const { TENANT_ID, CLIENT_ID, CLIENT_SECRET, WORKSPACE_ID, REPORT_ID, } = process.env; const POWER_BI_AUTH_URL = `https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token`; app.get('/api/getEmbedToken', async (req, res) => { try { // Get Access Token const authResponse = await axios.post(POWER_BI_AUTH_URL, new URLSearchParams({ grant_type: 'client_credentials', client_id: CLIENT_ID, client_secret: CLIENT_SECRET, scope: 'https://analysis.windows.net/powerbi/api/.default', })); const accessToken = authResponse.data.access_token; // Get Embed Token const embedResponse = await axios.post( `https://api.powerbi.com/v1.0/myorg/groups/${WORKSPACE_ID}/reports/${REPORT_ID}/GenerateToken`, { accessLevel: 'View' }, { headers: { Authorization: `Bearer ${accessToken}` } } ); res.json(embedResponse.data); } catch (error) { console.error(error.message); res.status(500).send('Error generating embed token'); } }); const PORT = 5000; app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
Abhängigkeiten installieren:
npm install react powerbi-client axios
Frontend-Code:
import React, { useEffect, useState } from 'react'; import axios from 'axios'; import { PowerBIEmbed } from 'powerbi-client-react'; const Dashboard = () => { const [embedConfig, setEmbedConfig] = useState(null); useEffect(() => { const fetchEmbedToken = async () => { try { const response = await axios.get('http://localhost:5000/api/getEmbedToken'); setEmbedConfig({ type: 'report', tokenType: 1, accessToken: response.data.token, embedUrl: response.data.embedUrl, settings: { panes: { filters: { visible: false } } }, }); } catch (error) { console.error('Error fetching embed token:', error); } }; fetchEmbedToken(); }, []); if (!embedConfig) return <div>Loading...</div>; return ( <PowerBIEmbed embedConfig={embedConfig} cssClassName="dashboard-embed" /> ); }; export default Dashboard;
Dieses Setup bietet eine sichere und einfache Möglichkeit, Power BI-Dashboards einzubetten. Berücksichtigen Sie bei der Produktion Folgendes:
Für weitere Informationen lade ich Sie ein, sich in diesem Artikel anzusehen, wie ich dies in einem realen Szenario umgesetzt habe. Darüber hinaus finden Sie in diesem Repository die Implementierung mit Next.js, angepasst an einen modernen und skalierbaren Stack.
Sie können diese Lösung gerne an die Anforderungen Ihres Projekts anpassen!
Danke fürs Lesen!! ??
Das obige ist der detaillierte Inhalt vonEinbetten eines Power BI-Dashboards: Eine sichere und einfache Lösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!