0

如果这不可能,请告诉我……但为了重构我的个人 API,我决定开始通过我的 API 调用 Twitch 端点,以便可以合并数据。为此,我将用户引导至身份验证页面并取回不记名令牌。然后,我将该令牌传递给我在标头中的 API。出于某种原因,如果我尝试从我的 API 中使用该令牌,我会得到 401。我不知道为什么,因为我无法在回复中查看原因。令牌从邮递员那里工作。

这是我在 API 中发出的请求示例:

public async Task<bool> ValidateToken()
{
    var response = await client.GetAsync("https://id.twitch.tv/oauth2/validate");
    return response.StatusCode == HttpStatusCode.OK;
}

HttpClient 在调用验证方法之前创建如下:

public TwitchService(IHeaderDictionary headers)
{
    StringValues token;
    StringValues clientId;
    var hasToken = headers.TryGetValue("Authorization", out token);
    var hasClientId = headers.TryGetValue("Client-id", out clientId);

    client = new HttpClient();
    client.DefaultRequestHeaders.Add("Accept", "application/json");

    if (hasToken)
    {
        var authToken = token.ToString().Replace("Bearer", "");
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authToken);
    }

    if (hasClientId)
    {
        client.DefaultRequestHeaders.Add("Client-ID", clientId.ToString());
    }
}
4

1 回答 1

0

事实证明,HttpClient 删除了 auth 标头,这是设计使然。以下链接对此给出了很好的解释:Authorization header is lost on redirect

于 2020-09-04T03:31:23.830 回答