无法通过Tableau REST API返回用户收藏夹

DDu*_*ffy 9 c# tableau-api tableau-server

我正在通过C#使用Tableau REST API来尝试获取用户收藏夹列表.我知道用户有一些,因为它是我的.我尝试过使用API​​版本2.8,3.0,3.1和3.2几乎没有任何乐趣.2.8和3.0响应:

<?xml version='1.0' encoding='UTF-8'?>
<tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api http://tableau.com/api/ts-api-2.8.xsd"> //3.0.xsd when using API Version 3.0
     <favorites/> //There should be a plethora of favorites of all varieties in here.
</tsResponse>
Run Code Online (Sandbox Code Playgroud)

3.1和3.2给我一个(404)未找到.

我在c#中的代码是:

public static string QueryFavourites(string APIVersion, string AuthToken, string SiteID, string UserID)
    {
        string result = "";
        try
        {
            string url = $@"{Server}/api/{APIVersion}/sites/{SiteID}/favorites/{UserID}";
            // Create the web request 
            WebRequest request = WebRequest.Create(url) as WebRequest;
            request.PreAuthenticate = true;
            request.Headers.Add($"x-tableau-auth: {AuthToken}");

            // Get response 
            using (WebResponse response = request.GetResponse())
            {
                // Get the response stream 
                StreamReader reader = new StreamReader(response.GetResponseStream());

                // Read the whole contents and return as a string 
                result = reader.ReadToEnd();
            }
            return result;
        }
        catch(Exception E)
        {
            logger.Error("Error! System Says: " + E.Message);
            return result;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我知道该方法有效,因为它用于多个其他API调用,每个调用使用不同的URL(取决于调用).有没有人知道它是在tableau端还是在我结束时的问题?显然它应该与我们拥有的Tableau Server 2.8或更高版本一起使用.(我想我们正在运行2018.1)

有人能够使用tableau REST API获取用户的收藏列表吗?我哪里错了?

(我也在Tableau论坛上发布了这个问题.)

更新:

我在下面的屏幕截图中包含了请求的CURL和Headers以及结果.(我使用'Restlet Client'比'Postman'更多,因此截图来自前者.)ID和身​​份验证令牌已被删除,因为它们是敏感信息,我认为我的公司不会满意我把它们放在公众面临互联网.所有ID和身份验证密钥都在正确的情况下并正确显示.它们在其他几个API调用中成功使用,并通过API直接从Tableau中提取.

我发现的例外情况是无法找到我正在调用的API版本.所以v2.6 - v2.8和v3.0都是"工作".其他版本返回404001 VERSION_NOT_FOUND错误.

在此输入图像描述

在此输入图像描述

Len*_*art 5

我将采取的方法是:

  1. 在站点上查询用户.(拥有收藏夹的用户)

  2. 检查用户是否确实:您认证的用户是; 和你要查询收藏夹的同一个用户

  3. 如果它们相同,请尝试使用REST API(DataSource,ViewWorkbook)添加收藏夹

  4. 获取用户的收藏夹,您添加的数据源/视图/工作簿应该在那里.

如果要更新用户,将用户添加到站点将用户添加到组,我已添加指向文档的链接

您可以使用您选择的Postman /工具完成这些操作.

您还可以尝试确保查询其他用户(或相同)的用户是服务器管理员(只是为了安全),并确保您是另一个(或相同)用户的同一站点的成员.

希望这可以帮助!

编辑:也许您可以尝试添加具有常规组的新用户到站点,确保您也是该站点的成员.然后添加一个收藏夹并获得常规组用户的收藏夹.如果这不起作用,你可以验证除了管理员之外,是否也不可能为团体用户提供收藏.