Nous essayons d'obtenir un ticket de confiance de Tableau Server en utilisant Ajax. L'équipe Tableau fournit un support pour php, java, sharepoint, ruby mais pas pour Ajax.Générer un ticket de confiance de tableau en utilisant AJAX
Le code que nous travaillons est:
<script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="../js/tableau_v8.js"></script>
<script type="text/javascript" src="jsonp.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#tableau").each(function() {
var workbook = $(this).attr("Presents");
var view = $(this).attr("MyDashboard");
var username = $(this).attr("userx");
var ticket;
$.ajax({
type: 'POST',
url: 'http://serverurl/trusted',
contentType: 'application/json',
dataType: 'jsonp',
data: {
username:'registeredusername',
server:'url},
success: function (result) {
alert('Ok');
ticket = result;
},
error: function() {
//console.log('Erro');
alert('Error');
}
});
var url = "http://serverurl/trusted/" + ticket + "/views/" + workbook + "/" + view;
var options = {
width: this.offsetWidth,
height: this.offsetHeight,
hideTabs: true,
hideToolbar: false,
onFirstInteractive: function() {
workbook = viz.getWorkbook();
activeSheet = workbook.getActiveSheet();
}
};
viz = new tableauSoftware.Viz(this, url, options);
});
});
</script>
Pour vous donner une idée, s'il vous plaît trouverez ci-dessous comment cela fonctionne en php:
TABLEAU_TRUSTED.php
<?php
// Returns a trusted URL for a view on a server for the
// given user. For example, if the URL of the view is:
// http://tabserver/views/MyWorkbook/MyView
//
// Then:
// $server = "tabserver";
// $view_url = "views/MyWorkbook/MyView";
//
function get_trusted_url($user,$server,$view_url) {
$params = ':embed=yes&:toolbar=yes';
$ticket = get_trusted_ticket($server, $user, $_SERVER['REMOTE_ADDR']);
if($ticket > 0) {
return "http://$server/trusted/$ticket/$view_url?$params";
}
else
return 0;
}
// Note that this function requires the pecl_http extension.
// See: http://pecl.php.net/package/pecl_http
// the client_ip parameter isn't necessary to send in the POST unless you have
// wgserver.extended_trusted_ip_checking enabled (it's disabled by default)
Function get_trusted_ticket($wgserver, $user, $remote_addr) {
$params = array(
'username' => $user,
'client_ip' => $remote_addr
);
return http_parse_message(http_post_fields("http://$wgserver/trusted", $params))->body;
}
?>
TABLEAU_SAMPLE_VIEW_PAGE.php
<p>An embedded view appears below:</p>
<?php
// This user-provided library should define get_user(), which returns the
// name of the user currently logged into this application.
//
include 'auth.php';
// Tableau-provided functions for doing trusted authentication
include 'tableau_trusted.php';
?>
<iframe src="<?php echo get_trusted_url(get_user(),'localhost','views/Date-Time/DateCalcs')?>"
width="400" height="400">
</iframe>
<p>
This was created using trusted authentication.
</p>
Des idées comment ce php pourrait fonctionner en javascript et ajax? Des idées comment pourrions-nous améliorer notre code?
Merci, Gabriel
Merci! Nous avons suivi votre suggestion à propos de l'AJAX appelant une fonction PHP côté serveur et cela fonctionne très bien depuis l'année dernière. Désolé pour le délai de réponse. – bbi