2016-04-05 11 views
0

HttpClientを使用してメールアカウントのAtomフィードを取得しようとしています。私がmail.google.comを手に入れようとする前に、それをカスタムHttpClientHandlerと一緒に使ってみましたが、うまくいきませんでした。HttpClientを使用したGmail Atomフィードの取得

私は解決策を探して、「認証ヘッダーを使用してサーバーに資格情報を渡すことができますが、これも機能しません」ということを知りました。私は何か間違っているのですか? 401エラーを起こすのはなぜですか?この方法はもはや機能しませんか?その後、

public async Task<bool> CheckMail() 
{ 
    AMailRefresher.handler.CookieContainer = new CookieContainer(); 
    string url = "https://mail.google.com/mail/feed/atom"; 
    var encoded = StringToByte64(user + ":" + password); 
    HttpResponseMessage res = null; 
    try 
    { 
     HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Get, url); 
     req.Headers.Add("Authorization", "Basic " + encoded); 
     res = await AMailRefresher.http.SendAsync(req); 
    } 
    catch { } 
    var xml = await res.Content.ReadAsStringAsync(); 
    if (lastFeedScan == null) 
     lastFeedScan = xml; 
    if (xml != lastFeedScan) 
    { 
     lastFeedScan = xml; 
     return true; 
    } 
    return false; 
} 

private static string StringToByte64(string text) 
{ 
    ASCIIEncoding encoding = new ASCIIEncoding(); 
    var bytes = encoding.GetBytes(text); 
    return Convert.ToBase64String(bytes, 0, bytes.Length); 
} 

答えて

1

Googleアカウント用2-Step Verificationを有効にしている場合(つまり、新しいログインはあなたがして、ログインを許可するために入力する必要がありますお使いの携帯電話へのテキストメッセージでコードを送信)します:ここで

は私のコードですこのアプローチでは、(基本64エンコードの)通常のパスワードを使用することはできません。代わりに、2段階認証プロセスをバイパスするためにアプリパスワードを作成する必要があります。詳細については、 Sign in using App Passwordsを参照してください。 アプリケーションパスワードの生成方法セクションでは、 App passwordsにアクセスします。ここでは、アプリケーションで使用する独自の16文字のパスワードを作成できます。

+0

ありがとうございました、私はすでにそれを動作させることができました。私はOAuth2やそのようなナンセンスを使っていましたが、しばらくしてからこれを解決することができました。 – Reynevan

関連する問題