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都是"工作"。其他版本返回
我会采取的方法是:
在网站上查询用户。(拥有收藏的用户)
检查用户是否为:与您身份验证的同一用户;以及要查询收藏夹的同一用户。
如果它们相同,请尝试使用RESTAPI(数据源、视图或工作簿)添加收藏夹。
获取用户的收藏夹,您作为收藏夹添加的数据源/视图/工作簿应该在其中。
如果您要更新用户、将用户添加到站点或将用户添加到组,我已经添加了指向文档的链接
您可以选择邮递员/工具来完成这些工作。
您还可以尝试确保查询另一个用户(或相同用户)的用户是服务器管理员(为了安全起见),并确保您是另一个(或相同用户)的同一站点的成员。
希望这有帮助!
编辑:也许你可以尝试在一个站点中添加一个新的用户,并使用Group Regular,以确保你也是该站点的成员。然后添加一个收藏夹,并获取组常规用户的收藏夹。如果这不起作用,除了管理员之外,您还可以验证是否不可能为组常规用户获取收藏夹。
终于知道发生了什么事。它不能按预期工作。它将只返回在身份验证令牌中经过身份验证的用户的用户收藏夹,而不管您在请求中输入了什么用户ID。有一个与Tableau支持的电话,当我们切换认证用户时意外地发现了它。我会把这个留在这里,以防其他人遇到同样的问题。