我在使用Tableau构建面向内部的仪表板时通常使用Wordpress,但在这种情况下这不起作用所以我从头开始。我是PHP的新手,略高于jQuery的新手,但我知道我的HTML方式。我需要将Okta javascript参数传递给Tableau嵌入。以下是我目前的代码:
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
var settings = {
url: "https://harmelin.okta.com/api/v1/users/me",
type: 'GET',
dataType: 'json',
contentType: 'application/json',
xhrFields: {
withCredentials: true
},
success: function (data) {
// alert(JSON.stringify(data));
},
error: function(err){
// alert(JSON.stringify(err));
}
}
jQuery.ajax(settings).done(function (success) {
console.log(success);
var raw = success.profile.login;
var email = raw.toLowerCase();
var $login = email.replace(/@[^@]+$/, '');
jQuery("#write-data").append($login);
});
</script>
</head>
<body>
<?php
// Tableau-provided functions for doing trusted authentication
require_once 'tableau_trusted.php';
?>
<div id="write-data"></div>
<?php
$user = 'jfedorowicz';
$server = 'dashboard1.harmelin.com';
$view = 'JoesPlayground/views/PTOStuff/Dashboard1?LCUsername=';
$theLogin = $login;
echo '<iframe src="';
echo get_trusted_url( $user,$server,$view$theLogin );
echo '" width="400" height="400"> </iframe>';
?>
</body>
两个问题:
1)我要做的是将$ login(javascript变量)传递给$ view。我100%知道我没有做到这一点,但我无法测试,因为问题二。
2)我返回500错误:“无法加载资源:服务器响应状态为500(内部服务器错误)”我认为这是一个Tableau错误,但我无法弄明白。
有什么想法吗?感谢。
答案 0 :(得分:0)
要生成授权令牌,可以使用给定的代码。
这段代码可以在2018.3之前的所有版本中正常工作
/ * PHP代码以生成身份验证令牌* /
$url = $dashboardURL . '/trusted';
$fields_string = "trusted_site=&username=" . $username;
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
$token = curl_exec($ch);
现在,只需在view/html
文件中将此令牌和信息中心网址一起传递即可。