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 编码。
我正在尝试使用 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 编码。