我在PHP Web应用程序中嵌入Tableau视图。我们一直在使用基本上允许进行匿名身份验证的Tableau Server使用启用的访客帐户。在这个方案下,响应式嵌入非常简单,并且使用Javascript解决方案(如fitvids.js/fluidvids.js)运行得非常好。响应iframe + Tableau受信任身份验证
最近,我们对受信任的身份验证进行了更改,该身份验证通过Web应用程序将特定用户传递给Tableau Server,生成唯一的一次性受信任凭单并呈现视图。使用标准的固定嵌入,一切都按预期工作。但是,在执行fitvids.js或fluidvids.js时,我们会遇到令人生畏的Tableau错误:Could not locate unexpired trusted ticket。
我最好的猜测是细分为两种:
PHP的票代和URL创建的JavaScript
处理顺序(最有可能)
的Tableau服务器限制
由于iframe中的内容是动态的,因此只有css解决方案无法工作。
作为参考,这里是有问题的PHP:
/**
* Implementation of Tableau trusted auth for php
*
* http://onlinehelp.tableausoftware.com/v8.1/server/en-us/trusted_auth_webURL.htm
*/
function get_trusted_url($user, $server, $view_url, $site) {
$params = ':embed=yes&:toolbar=yes:tabs=no';
$ticket = get_trusted_ticket($server, $user, $_SERVER['REMOTE_ADDR'], $site);
return "http://$server/trusted/$ticket/$view_url?$params";
}
// 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, $site) {
$params = array(
'username' => $user,
'client_ip' => $remote_addr,
'target_site' => $site
);
return http_parse_message(http_post_fields("http://$wgserver/trusted", $params))->body;
}
?>
和示例嵌入:
2013-11-25
mrP
+0
听起来像API问题,也许你应该联系tableausoftware.com的支持? –