我在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:
<?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;
}
?>
和示例嵌入:
<iframe src="<?php echo get_trusted_url($user,$server,$view_url,$site);?>"></iframe>
聽起來像API問題,也許你應該聯繫tableausoftware.com的支持? – DanFromGermany