根据我的要求,我收到了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;
答案 0 :(得分: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 + ":")