Embed Dashboard
Controller
use Firebase\JWT\JWT;
// Tableau Server configuration
$tableauServer = "https://evetdashboard.dvs.gov.my";
$clientId = "0d9d6be7-3393-43c6-aa2d-7d73dfd34cf3"; // From the Connected App
$secretId = "0b55f98b-11a0-4877-ae57-6515875512f6"; // From the Connected App
$secretValue = "7GzyPukDNxBlbiYrCz2GETW9pfKxfrnh5jQ6HwvvNTo="; // From the Connected App
// JWT payload
$issuedAt = time();
$expirationTime = $issuedAt + 300; // JWT valid for 5 minutes
$payload = [
"iss" => $clientId, // Client ID from Connected App
"exp" => $expirationTime,
"jti" => Yii::$app->security->generateRandomString(),
"aud" => "tableau",
"sub" => "embed_dashboard", // Tableau username
"scp" => ["tableau:views:embed", "tableau:metrics:embed"]
];
$header = [
'kid' => $secretId,
'iss' => $clientId
];;
// Generate JWT using the client secret
$jwt = JWT::encode($payload, $secretValue, 'HS256', null, $header);
View
<script type='module' src='https://evetdashboard.dvs.gov.my/javascripts/api/tableau.embedding.3.latest.min.js'></script>
<tableau-viz
id='tab-viz'
src='https://evetdashboard.dvs.gov.my/views/evetpermit-premisInfografik/MenuUtamaDashboard'
toolbar='hidden'
token="<?php echo $jwt; ?>"
>
</tableau-viz>