Таблица отсутствует пароль - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь извлечь данные в Таблицу с помощью Web Data Connector.API, из которого я извлекаю данные, имеет Basic Auth.

Код прекрасно работает в WDC Simulator, но не работает при запуске из Tableau Desktop.Выдает эту ошибку -

«отсутствует пароль»

Но я интегрировал пароль.(В симуляторе тоже отлично работает).Любая помощь приветствуется

HTML код

<html>
<head>
    <title>API Fetch</title>
    <meta http-equiv="Cache-Control" content="no-store" />

     <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" type="text/javascript"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" ></script>

    <script src="https://connectors.tableau.com/libs/tableauwdc-2.0.latest.js" type="text/javascript"></script>
    <script src="my_js_above.js" type="text/javascript"></script>

</head>

<body>
    <div class="container container-table">
        <div class="row vertical-center-row">
            <div class="text-center col-md-4 col-md-offset-4">
                <button type = "button" id = "submitButton" class = "btn btn-success" style = "margin: 10px;">Get Storage Data!</button>
            </div>
        </div>
    </div>
</body>


</html>

JS код

(function() {


// Create the connector object
    var myConnector = tableau.makeConnector();

//Setting up the Basic Authorization Header
$.ajaxSetup({
    headers: {'Authorization': "Basic " + btoa("my_username" + ":" + "my_password")}
})

     myConnector.init = function(initCallback) {
      tableau.authType = tableau.authTypeEnum.basic;
      initCallback();
  };

    // Define the schema
    myConnector.getSchema = function(schemaCallback) {
        var cols = [{
            id: "Name",
            alias: "Name",
            dataType: tableau.dataTypeEnum.string
        }, {
            id: "Size",
            alias: "Size",
            dataType: tableau.dataTypeEnum.string
        }, {
            id: "timeStamp",
            alias: "Timestamp",
            dataType: tableau.dataTypeEnum.datetime
        }];

        var tableSchema = {
            id: "Storage",
            alias: "Fetches data storage",
            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
        });
    });
})();
...