我为我的REST API创建了一个自定义Web数据连接器,它具有基本身份验证。
根据Tableau Documentation on Auth,它建议为auth添加基本代码,如果authType是基本代码,Tableau will show a standard username/password dialog.
但它从未显示弹出窗口。
// Init function for connector, called during every phase
myConnector.init = function(initCallback) {
tableau.authType = tableau.authTypeEnum.basic;
initCallback();
}
我的JS代码
(function() {
// Create the connector object
var myConnector = tableau.makeConnector();
//Basic Auth
myConnector.init = function(initCallback) {
tableau.authType = tableau.authTypeEnum.basic;
initCallback();
}
// Define the schema
myConnector.getSchema = function(schemaCallback) {
var cols = [{
id: "Name",
alias: "Database Name",
dataType: tableau.dataTypeEnum.string
}, {
id: "Size",
alias: "Database Size",
dataType: tableau.dataTypeEnum.int
}, {
id: "timeStamp",
alias: "Timestamp",
dataType: tableau.dataTypeEnum.datetime
}];
var tableSchema = {
id: "Storage",
alias: "Fetches data storage details",
columns: cols
};
schemaCallback([tableSchema]);
};
// Download the data
myConnector.getData = function(table, doneCallback) {
$.getJSON("https://MY_API_URL", function(resp) {
var feat = resp.content,
tableData = [];
// Iterate over the JSON object
for (var i = 0, len = feat.length; i < len; i++) {
tableData.push({
"Name": feat[i].Name,
"Size": feat[i].Size,
"timeStamp": feat[i].timeStamp
});
}
table.appendRows(tableData);
doneCallback();
});
};
tableau.registerConnector(myConnector);
// Create event listeners for when the user submits the form
$(document).ready(function() {
$("#submitButton").click(function() {
tableau.connectionName = "Storage"; // This will be the data source name in Tableau
tableau.submit(); // This sends the connector object to Tableau
});
});
})();
控制台日志错误 -
GET https://MY_API_URL 401 (Unauthorized) jquery.min.js:4
任何人都可以帮助我 -
为什么没有凭据弹出窗口出现?
在没有弹出窗口的情况下输入凭据的任何其他方式。也许在JS中动态分配ID /密码的值并从那里输入?
我正在使用 Tableau Desktop 10.5 和 tableauwdc-2.0.latest.js
[编辑] -
我遇到了这个AJAX way to build authentication URL header,但我无法实现它。任何人都可以帮忙吗?