Mono.NET 框架上的 Asana 授权错误

Asana Authorization error on Mono.NET framework

我正在尝试使用 Asana restful API,但收到此错误:

{"errors":[{"message":"Not Authorized"}]}

 public static string GetProjects()
{
    string url = "https://app.asana.com/api/1.0/projects/"; // Constants.BaseApiUrl + "projects";
    var client = new RestClient(url);
    System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);
    client.Authenticator = new HttpBasicAuthenticator(AsanaAPIKey.GetBase64(), "");
    var req = new RestRequest(Method.GET);
    RestResponse res =(RestResponse) client.Execute(req);

    return res.Content;
}

public static bool CheckValidationResult(object sp,
    X509Certificate cert,
    X509Chain req,
    System.Net.Security.SslPolicyErrors problem)
{
    return true;
}

我试过普通 httpwebrequest/Httpwebresponse 但它也不起作用所以我尝试了 restsharp 库,但仍然是同样的问题。

知道为什么会发生此错误吗?

我不了解 .NET,但我看到您正在创建一个 HttpBasicAuthenticator,看起来您正在向它传递一个 username/password 对。但是您传递给它的是 API 密钥的 base64 编码版本,这是错误的。 documentation on authentication 声明当使用 HTTP 库时,您应该将 API 键作为用户名传递,不变。如果您手动构建完整的 header,则只需要手动进行 base64 编码。