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 に答える