Tableau api 托管在云平台上的Tableau Web数据连接器陷入无限循环

Tableau api 托管在云平台上的Tableau Web数据连接器陷入无限循环,tableau-api,Tableau Api,我在我们公司的私有云上托管了这个TWDC(tableau web数据连接器)应用程序。 部署在那里的每个应用程序都会在用户通过单一登录页面登录后被访问,然后重定向到该应用程序 当我尝试在Tableau桌面上使用web数据连接器时,当我按下按钮执行Tableau.submit()后,它会陷入无限循环 我设置了调试器,发现当我按下按钮时,加载的页面不是WDC的index.html,而是来自SSO登录的重定向页面。 我不知道为什么会发生这种情况,没有什么意义,因为它首先加载了索引.html,但是在我按

我在我们公司的私有云上托管了这个TWDC(tableau web数据连接器)应用程序。 部署在那里的每个应用程序都会在用户通过单一登录页面登录后被访问,然后重定向到该应用程序

当我尝试在Tableau桌面上使用web数据连接器时,当我按下按钮执行
Tableau.submit()
后,它会陷入无限循环

我设置了调试器,发现当我按下按钮时,加载的页面不是WDC的index.html,而是来自SSO登录的重定向页面。 我不知道为什么会发生这种情况,没有什么意义,因为它首先加载了索引.html,但是在我按下这个按钮后,它回到了SSO登录和重定向页面中间的某个地方。 请注意:它在模拟器上运行良好。

有什么想法吗

这是我的密码:

HTML

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>TableauAngular</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <script type="text/javascript" src="assets/js/jquery.min.js"></script>
  <script type="text/javascript" src="assets/js/tableauwdc-2.3.latest.js"></script>
  <script type="text/javascript" src="controller.js"></script>
</head>
<body>
  <button id="submitButton">Send</button>
  <br />
  <br />
  <textarea id="log" style="border: 1px solid #000; width: 100%; height: 700px;"></textarea>
  <br />
  <div id="placeholder"></div>
</body>
</html>

这不是您的代码的问题。对于WDC,有一个交互阶段,用户可以在屏幕上进行交互(这是您的第一次SSO登录),但还有一个非交互(获取数据)阶段,Tableau将尝试检索数据,并且从不向用户显示SSO登录。看见由于此页面加载时没有用户交互,因此不能/不应该在其上设置SSO安全性。

您的回答很有意义,现在我理解了“阶段”之间的区别。所以基本上,你是说,没有解决办法(我不相信在该公司,我们能够通过自定义身份验证在外部域上发布此信息。解决方法是设置一个不需要身份验证的服务器。虽然这不是真正的建议,但您甚至可以在Tableau服务器上建立一个轻量级服务器,并且可能不需要通过那么这种情况下的身份验证呢?但除此之外,我不知道有什么解决办法。
$(document).ready(function() {
  try {

    $("#submitButton").click(function() { tableau.submit() });

    var myConnector = tableau.makeConnector();

    // these are function which are not important for this question;
    myConnector.getSchema = fnGetSchema; 
    myConnector.getData = fnGetData;

    tableau.registerConnector(myConnector);

  } catch (e) {
    logger("ERROR: " + JSON.stringify(e));
  }
});