Невозможно вернуть избранное пользователя через Tableau REST API - PullRequest
0 голосов
/ 04 января 2019

Я использую Tableau REST API через C #, чтобы попытаться получить список избранных пользователей.Я знаю, что у пользователя есть, потому что это я.Я пытался использовать 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) Не найдено.

Код, который я имею в 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 2.8 или выше, который у нас есть.(я думаю, что мы запускаем 2018.1)

Может ли кто-нибудь получить список избранного для пользователя, используя tableau REST API?Где я ошибаюсь?

(я также разместил вопрос на форуме Tableau .)

ОБНОВЛЕНИЕ:

Я включил CURL иЗаголовки запроса, а также результаты, на скриншотах ниже.(Я использую «Клиент Restlet» больше, чем «Почтальон», поэтому скриншоты взяты с первого.) Идентификаторы и токены аутентификации были удалены, поскольку они являются конфиденциальной информацией, и я не думаю, что моя компания была бы счастлива, если бы я разместил их наобщедоступный интернет.Все идентификаторы и ключи авторизации находятся в правильном регистре и представлены правильно.Они успешно используются в нескольких других вызовах API и извлекаются непосредственно из Tableau через API.

Исключения, которые я обнаружил, - это невозможность найти версию API, которую я вызываю.так v2.6 - v2.8 и v3.0 все "работают".Другие версии возвращают ошибку 404001 VERSION_NOT_FOUND.

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Наконец выяснил, что происходит.Это не работает, как задумано.Он будет возвращать избранное пользователя только для пользователя, который аутентифицирован в токене аутентификации, независимо от того, какой идентификатор пользователя вы указали в запросе.Позвонили в службу поддержки Tableau и случайно выяснили, когда мы сменили аутентифицированного пользователя.Я оставлю это здесь на случай, если кто-то еще столкнется с той же проблемой.

0 голосов
/ 05 февраля 2019

Подход, который я выбрал бы:

  1. Запрос пользователя на сайте. (пользователь, у которого есть избранные)

  2. Проверьте, является ли пользователь на самом деле: тем же пользователем, которого вы аутентифицировали; и тот же пользователь, которого вы собираетесь запросить в избранное

  3. Если они совпадают, попробуйте добавить избранное с помощью REST API ( Источник данных , Просмотр или Рабочая книга )

  4. Получите избранное для пользователя , там должен быть источник данных / представление / рабочая книга, добавленный вами в качестве избранного.

Если вы хотите Обновить пользователя , Добавить пользователя на сайт или Добавить пользователя в группу , я добавил ссылки на документацию

Вы можете делать это с почтальоном / инструментом по вашему выбору.

То, что вы также можете попробовать, это убедиться, что пользователь, который запрашивает другого пользователя (или того же самого), является администратором сервера (просто для безопасности), и убедиться, что вы являетесь участником того же сайта другого (или такой же) пользователь.

Надеюсь, это поможет!

РЕДАКТИРОВАТЬ: Возможно, вы можете попробовать добавить нового пользователя с регулярной группой на сайт, гарантируя, что вы тоже являетесь участником сайта. Впоследствии добавление избранного и получение избранного для пользователя группы регулярно. Если это не сработает, вы можете проверить, невозможно ли получить фавориты для пользователей группы регулярно, кроме администраторов.

...