关于c#:无法通过Tableau REST API返回用户收藏夹

Unable to return user favorites via Tableau REST API

我正在通过C_使用TableauRestAPI来尝试获取用户最喜爱的列表。我知道用户有一些,因为是我。我尝试过使用API版本2.8、3.0、3.1和3.2,但几乎没有乐趣。2.8和3.0回答:

1
2
3
4
<?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>

3.1和3.2给我找不到(404)。

我在C中的代码是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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;
        }
    }

我知道这个方法有效,因为它用于多个其他API调用,每个调用使用不同的URL(取决于调用)。有人知道是在舞台上还是在我这边?显然,它应该与Tableau Server 2.8或更高版本一起工作,我们有。(我想我们正在运行2018.1)

是否有人能够使用TableauRESTAPI为用户获取收藏夹列表?我哪里出错了?

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

更新:

我在下面的屏幕截图中包含了请求的curl和headers,以及结果。(我使用的是"restlet client"而不是"postman",因此截图来自前者。)ID和身份验证令牌已被删除,因为它们是敏感信息,我认为我的公司不愿意将它们放在面向公众的互联网上。所有ID和身份验证密钥的大小写都是正确的,并且显示正确。它们被成功地用于其他几个API调用中,并通过API直接从Tableau中提取。

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

enter image description here

enter image description here


我会采取的方法是:

  • 在网站上查询用户。(拥有收藏的用户)

  • 检查用户是否为:与您身份验证的同一用户;以及要查询收藏夹的同一用户。

  • 如果它们相同,请尝试使用RESTAPI(数据源、视图或工作簿)添加收藏夹。

  • 获取用户的收藏夹,您作为收藏夹添加的数据源/视图/工作簿应该在其中。

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

    您可以选择邮递员/工具来完成这些工作。

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

    希望这有帮助!

    编辑:也许你可以尝试在一个站点中添加一个新的用户,并使用Group Regular,以确保你也是该站点的成员。然后添加一个收藏夹,并获取组常规用户的收藏夹。如果这不起作用,除了管理员之外,您还可以验证是否不可能为组常规用户获取收藏夹。


    终于知道发生了什么事。它不能按预期工作。它将只返回在身份验证令牌中经过身份验证的用户的用户收藏夹,而不管您在请求中输入了什么用户ID。有一个与Tableau支持的电话,当我们切换认证用户时意外地发现了它。我会把这个留在这里,以防其他人遇到同样的问题。