无法通过 Tableau REST return 用户收藏夹 API
Unable to return user favorites via Tableau REST API
更新:2019 年 9 月。
这个 API 调用现在可以正常工作了。
Tableau 端的问题似乎已经解决,现在调用 return 是正确的数据。
============================================= ==================
我正在通过 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 和 Headers 以及结果。 (我使用 'Restlet Client' 多于 'Postman',所以屏幕截图来自前者。)ID 和身份验证令牌已被删除,因为它们是敏感信息,我认为我的公司不会乐意我把他们在面向互联网的 public 上。
所有 ID 和授权密钥均大小写正确且显示正确。它们被成功用于其他几个 API 调用,并通过 API.
直接从 Tableau 中提取
我发现的例外情况是无法找到我正在调用的 API 的版本。所以 v2.6 - v2.8 和 v3.0 都是 "work"。其他版本 return 一个 404001 VERSION_NOT_FOUND
错误。
我会采取的方法是:
Query a user on the site.(收藏的用户)
检查用户是否确实:与您进行身份验证的用户相同;以及您要查询收藏夹的同一用户
如果相同,请尝试使用 REST 添加收藏夹 API (DataSource, View or Workbook)
Get the favorites for the user,你收藏的datasource/view/workbook应该在里面
如果你想Update the user, Add user to site or Add user to Group,我已经添加了文档链接
您可以根据自己的选择 Postman/tool 执行这些操作。
您还可以尝试确保查询另一个用户(或同一用户)的用户是服务器管理员(为了安全起见),并确保您是另一个(或相同)用户。
希望对您有所帮助!
编辑:也许您可以尝试向站点添加一个具有常规组的新用户,确保您也是该站点的成员。之后添加收藏夹并为组常规用户获取收藏夹。如果这不起作用,您可以验证除了管理员之外,是否也无法为组常规用户获得收藏夹。
终于知道是怎么回事了。
它没有按预期工作。
无论您在请求中输入什么用户 ID,它只会 return 用户收藏夹用于在身份验证令牌中进行身份验证的用户。
当我们切换经过身份验证的用户时,与 Tableau 支持人员进行了通话并无意中弄明白了。
我会把它留在这里,以防其他人遇到同样的问题。
更新:2019 年 9 月。
这个 API 调用现在可以正常工作了。 Tableau 端的问题似乎已经解决,现在调用 return 是正确的数据。
============================================= ==================
我正在通过 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 和 Headers 以及结果。 (我使用 'Restlet Client' 多于 'Postman',所以屏幕截图来自前者。)ID 和身份验证令牌已被删除,因为它们是敏感信息,我认为我的公司不会乐意我把他们在面向互联网的 public 上。 所有 ID 和授权密钥均大小写正确且显示正确。它们被成功用于其他几个 API 调用,并通过 API.
直接从 Tableau 中提取我发现的例外情况是无法找到我正在调用的 API 的版本。所以 v2.6 - v2.8 和 v3.0 都是 "work"。其他版本 return 一个 404001 VERSION_NOT_FOUND
错误。
我会采取的方法是:
Query a user on the site.(收藏的用户)
检查用户是否确实:与您进行身份验证的用户相同;以及您要查询收藏夹的同一用户
如果相同,请尝试使用 REST 添加收藏夹 API (DataSource, View or Workbook)
Get the favorites for the user,你收藏的datasource/view/workbook应该在里面
如果你想Update the user, Add user to site or Add user to Group,我已经添加了文档链接
您可以根据自己的选择 Postman/tool 执行这些操作。
您还可以尝试确保查询另一个用户(或同一用户)的用户是服务器管理员(为了安全起见),并确保您是另一个(或相同)用户。
希望对您有所帮助!
编辑:也许您可以尝试向站点添加一个具有常规组的新用户,确保您也是该站点的成员。之后添加收藏夹并为组常规用户获取收藏夹。如果这不起作用,您可以验证除了管理员之外,是否也无法为组常规用户获得收藏夹。
终于知道是怎么回事了。 它没有按预期工作。 无论您在请求中输入什么用户 ID,它只会 return 用户收藏夹用于在身份验证令牌中进行身份验证的用户。 当我们切换经过身份验证的用户时,与 Tableau 支持人员进行了通话并无意中弄明白了。 我会把它留在这里,以防其他人遇到同样的问题。