Thingsboard - ошибка аутентификации в REST API (команда FROM Curl и ASP.NET) - PullRequest
0 голосов
/ 22 ноября 2018

Я могу войти на сайт Thingsboard, используя свои учетные данные, однако, когда я пытаюсь подключить его с помощью команды CURL, я получаю сообщение об ошибке «Ошибка аутентификации».

curl -X POST "https://cloud.thingsboard.io/api/auth/login" -d "{"username":"XYZPQR@ABCDLMN.com", "password":"Q@34&pwn"}" --header "Content-Type: application/json" --header "Accept: application/json"

Код ошибки

{"status":401,"message":"Authentication failed","errorCode":10,"timestamp":1542893993515}

Однако, когда я использую один и тот же идентификатор пользователя и пароль в приложении ASP.NET для получения токена авторизации, я получаю токен JWT, но, используя тот же токен, я не могу выполнить какой-либо вызов REST API изThingsboard.

ASP.NET CORE CODE

var response = new HttpResponseMessage();
var client = new HttpClient();                
UserModel model = new UserModel { username = "XYZPQR@ABCDLMN.com", password = "Q@34&pwn" };
var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");

response = await client.PostAsync("https://cloud.thingsboard.io/api/auth/login", content);

string data = await response.Content.ReadAsStringAsync();

var userToken = JsonConvert.DeserializeObject<UserToken>(data);

MediaTypeWithQualityHeaderValue contentType = new MediaTypeWithQualityHeaderValue("application/json");

client.DefaultRequestHeaders.Accept.Add(contentType);

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken.token);
Uri url = new Uri("https://cloud.thingsboard.io/api/plugins/telemetry/DEVICE/431be6e0-e8ca-11e8-9e5c-3d544ba4fdfc/values/timeseries?keys=Electricity");

response = await client.GetAsync(url);

Класс модели

 public class UserModel {
        public string username { get; set; }
        public string password { get; set; }
    }

    public class UserToken
    {
        public string token { get; set; }
        public string refreshToken { get; set; }
    }

Подскажите, пожалуйста, как получить значения телеметрии из Thingsboard REST API.

1 Ответ

0 голосов
/ 23 ноября 2018

Это была маленькая ошибка, которую я делал;Я изменил старый код на новый код (как показано ниже), и все стало работать как положено.

Старый код

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", userToken.token);

Новый код

client.DefaultRequestHeaders.Add("X-Authorization", "Bearer " + userToken.token);

Спасибо заподдержка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...