更新:2019 年 9 月。
此 API 调用现在可以按预期工作。 Tableau 端的问题似乎已经解决,调用现在返回正确的数据。
============================================= ================
我正在通过 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>
3.1 和 3.2 给我一个 (404) Not found。
我在 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;
}
}
我知道该方法有效,因为它用于多个其他 API 调用,每个调用使用不同的 URL(取决于调用)。 有谁知道这是画面端还是我端的问题? 显然它应该与我们拥有的 Tableau Server 2.8 或更高版本一起使用。 (我想我们运行的是 2018.1)
是否有人能够使用 Tableau REST API 获取用户的收藏夹列表? 我哪里错了?
(我还在 Tableau Forum 上发布了问题。)
更新:
我在下面的屏幕截图中包含了请求的 CURL 和 header 以及结果。 (我使用“ReSTLet Client”而不是“Postman”,所以屏幕截图来自前者。)ID 和身份验证 token 已被删除,因为它们是敏感信息,我认为我的公司不会乐意将它们放在面向公众的互联网。 所有 ID 和授权 key 均大小写正确且显示正确。它们成功地用于其他几个 API 调用,并通过 API 直接从 Tableau 中提取。
我发现的异常(exception)是无法找到我正在调用的 API 的版本。所以 v2.6 - v2.8 和 v3.0 都“有效”。其他版本返回 404001 VERSION_NOT_FOUND
错误。
最佳答案
我会采取的方法是:
Query a user on the site. (拥有收藏夹的用户)
检查用户是否确实:以及您要查询收藏夹的同一用户
如果它们相同,请尝试使用 REST API(DataSource、View 或 Workbook)添加收藏
Get the favorites for the user ,您添加为收藏夹的数据源/ View /工作簿应该在那里。
如果你想Update the user , Add user to site或 Add user to Group , 我添加了指向文档的链接
您可以使用您选择的 Postman/工具来完成这些事情。
您还可以尝试确保查询另一个用户(或同一用户)的用户是服务器管理员(只是为了安全起见),并确保您是另一个(或相同)用户。
希望这对您有所帮助!
编辑:也许您可以尝试向站点添加一个具有常规组的新用户,确保您也是该站点的成员。之后添加收藏夹并为组常规用户获取收藏夹。如果这不起作用,您可以验证除了管理员之外,是否也无法为组常规用户获得收藏夹。
关于c# - 无法通过 Tableau REST API 返回用户收藏夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54036082/