1

こんばんは。

C# には少し慣れていませんが、github api で遊んでいて、基本的な認証について頭を悩ませようとしています。私は、github サイトにリンクし、そこからプロファイルをプルダウンすることを唯一の目的とするコンソール アプリを作成しました。認証を必要としない呼び出しを行うと、正常に動作します。

ただし、基本認証を使用して認証しようとすると、正しいユーザー名とパスワードを入力したにもかかわらず、401 エラーが発生します。私はグーグルで検索しましたが、私のコードは正しいようですが、認証されていない理由がわかりません。

以下のコードを添付しました。すべての使用物が存在し、正しいです。

class gitHubConnection : ConnectionManager
{
    public override string getRepositories()
    {
        string web_response = null;
        try
        {
            CredentialCache cache = new CredentialCache();
            NetworkCredential nc = new NetworkCredential("githubUsername", "githubPassword");
            cache.Add(new Uri("https://api.github.com/user"), "Basic", nc);
            WebRequest request = (HttpWebRequest)WebRequest.Create("https://api.github.com/user");

            request.Credentials = nc;
            WebResponse response = request.GetResponse();

            web_response = response.ToString();
        }
        catch (UriFormatException e)
        {
            Console.WriteLine("rats!!!!" + e.StackTrace);
        }
        catch (IOException ioe)
        {
            Console.WriteLine("something went pop " + ioe.StackTrace);
        }
        return web_response;
    }
}

これをご覧いただきありがとうございます。何かを忘れてしまったのは確かですが、何が何かわかりません。

ウェルシュボーイ

4

1 に答える 1

1

次のように認証ヘッダーを追加すると機能します。

WebRequest request = (HttpWebRequest)WebRequest.Create("https://api.github.com/user");
request.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("user:password")));

WebResponse response = request.GetResponse();
于 2013-11-03T23:47:23.183 に答える