在 API HTTP 调用中使用永久令牌

问题描述

我正在编写一个 C# 桌面应用程序,它将进行一些 API 调用以检索我将在其中解析的 JSON 中的一些数据。我正在使用 Vice 的 API (https://www.deputy.com/api-doc/API/Getting_Started) 并且无法使用永久令牌(我按照他们的步骤生成一个令牌,所以我有一个)。过去我通常只做一个 HttpWebRequest 并将其传递给 api url,它工作正常。但在过去,如果有一个 api 密钥,我会做类似 &api_key=api_key_here 的事情,或者如果我有一个授权密钥,它会是类似 &Authorization=put_token_here 的东西。

所以我只是想让 Roster 正常工作,例如:/api/v1/supervise/roster/(参见 https://www.deputy.com/api-doc/API/Roster_Management_Calls)。

所以我的代码看起来像这样:

private void backgroundWorker1_DoWork(object sender,DoWorkEventArgs e)
{
    try
    {
        HttpWebRequest httpWReq = (HttpWebRequest)WebRequest.Create(
            "https://mysite.na.deputy.com/api/v1/supervise/roster&Authorization=my_permanent_token_here"
            );
        httpWReq.Method = "GET";
        HttpWebResponse response = (HttpWebResponse)httpWReq.GetResponse();
        string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

        this.Invoke((MethodInvoker)delegate
        {
            richTextBox1.AppendText(responseString + Environment.NewLine);
        });
    }
    catch (Exception ex)
    {
        this.Invoke((MethodInvoker)delegate
        {
            richTextBox1.AppendText(ex.ToString());
        });
    }
}

但我得到以下信息:

{"error":{"code":403,"message":"未授权"}}

我认为它必须是我的永久令牌上的语法,但我已经尝试过 api_key=token=authorization=。谁能帮帮我?

解决方法

您需要按照以下格式在请求标头中将令牌作为一行传递:

Authorization: OAuth YOURTOKEN

使用以下代码:

string permanentAccessToken = "123456";

WebRequest request = WebRequest.Create("http://blabla");
request.Headers.Add("Authorization","OAuth " + permanentAccessToken);