0

我收到了来自 Asana 的 401 响应。

var url = "https://app.asana.com/api/1.0/users/me";
byte[] encodedByte = System.Text.ASCIIEncoding.ASCII.GetBytes(APIKey);
APIKey = Convert.ToBase64String(encodedByte);
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(url);
wrGETURL.Headers.Add("Authorization: Basic " + APIKey);
string result;
using (StreamReader reader = new StreamReader(wrGETURL.GetResponse().GetResponseStream()))
{
    result = reader.ReadToEnd();
}
return result;
4

1 回答 1

1

HTTP 基本身份验证的工作方式是将用户名和密码一起编码为 base64,用冒号分隔。在 Asana API 中,密钥是用户名,没有密码。

来自https://asana.com/developers/documentation/getting-started/authentication#sts=API%20Keys的文档:

注意:大多数允许您指定用户名和密码的实用程序和库将为您处理正确的标头编码。但是,如果您需要手动设置 Authorization 标头,则通过将冒号 (:) 添加到 API 密钥来构造标头值,然后对该字符串进行 base64 编码。如果您需要更多详细信息,可以阅读有关基本身份验证的更多信息。

所以,你可能应该这样做:

byte[] encodedByte = System.Text.ASCIIEncoding.ASCII.GetBytes(APIKey + ":")

于 2013-10-07T17:36:46.150 回答