首页 > 解决方案 > 在 C# 中使用密钥和密钥调用 API

问题描述

所以我之前使用过 Swagger API,但由于所有 API 调用都有一个代码生成器,我真的不必担心那些东西。现在我想使用以下 api https://docs.skincay.com/#introduction

public static HttpClient ApiClient { get; set; }

    public static void InitializeClient()
    {
        if (ApiHelper.ApiClient == null)
            ApiHelper.ApiClient = new HttpClient();

        ApiHelper.ApiClient.BaseAddress = new Uri("https://api.skincay.com/v1/");
        ApiHelper.ApiClient.DefaultRequestHeaders.Accept.Clear();
        ApiHelper.ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        ApiHelper.ApiClient.DefaultRequestHeaders.Add("Authorization", "Basic clientid:secret");
    }

我遵循了本指南:https ://www.youtube.com/watch?v=aWePkE2ReGw

我只想在普通的控制台应用程序中使用它,但这不应该是我的问题。问题是我给他们的标题信息是否正确,因为我没有从我的电话中得到任何回应。我发现使用这个文档真的很难,而且我还没有找到任何人试图使用这个 api。我希望这里有人可以帮助我。

标签: c#api

解决方案


您应该对您的授权凭据进行 base64 编码:

var bytes = Encoding.UTF8.GetBytes($"{clientId}:{secret});
var base64 = Convert.ToBase64String(bytes);
ApiClient.DefaultRequestHeaders.Add("Authorization", $"Basic {base64}");

注意:不要忘记将教程中的值替换为您的真实 uri、clientId 和 secret

ApiClient.BaseAddress = new Uri("https://docs.skincay.com/#introduction");
string clientId = "bob";
string secret = "derparole";

推荐阅读