Аутентификация с помощью Clockify API? - PullRequest
1 голос
/ 12 апреля 2019

Я работаю над новым приложением, в котором мне нужно использовать API Clockify.Когда я делаю свое тестовое приложение для проверки концепции, я замечаю, что получаю ошибку 401 в ответ на использование одной из их базовых функций - получение клиентов по рабочему пространству.Я что-то упустил с аутентификацией?Есть ли настройка, которую мне нужно разрешить в моем профиле?Я получаю сообщение об ошибке: System.Net.WebException: «Удаленный сервер возвратил ошибку: (401) Несанкционированный».Спасибо.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;

namespace Api
{
    public class ApiHelper
    {
        public static HttpClient ApiClient { get; set; } = new HttpClient();

        public static void InitializeClient(string username, string password)
        {
            ApiClient = new HttpClient();
            ApiClient.BaseAddress = new Uri("https://api.clockify.me/api/");
            ApiClient.DefaultRequestHeaders.Accept.Clear();
            ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        }

        public static void GetClientsFromWorkspace(string workspace)
        {
            ApiClient.DefaultRequestHeaders.Add("X-Api-Key", "*********");
            var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.clockify.me/api/workspaces/" + workspace + "/clients");
            httpWebRequest.ContentType = "text/json";
            httpWebRequest.Method = "GET";
            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

        }
    }
}

1 Ответ

1 голос
/ 12 апреля 2019

Вы устанавливаете заголовок ключа API на ApiClient, но затем делаете запрос с помощью только что созданного HttpWebRequest, который не имеет требуемого заголовка ключа API.

Вы должны либо сделатьВаш запрос с использованием ApiClient или добавьте заголовок X-Api-Key к HttpWebRequest следующим образом:

httpWebRequest.Headers.Add(“X-Api-Key”, “********”)
...