2016-04-05 12 views
0

HttpClient kullanarak bir e-posta hesabı için Atom beslemesi almaya çalışıyorum. mail.google.com'u bulmaya ve özel HttpClientHandler ile kullanmaya çalışmadan önce işe yaramadı.Gmail Atom Beslemesini HttpClient ile Kullanma

Çözüm aradım ve sunucuya kimlik bilgilerini geçirmek için Yetkilendirme üstbilgisini kullanabileceğimi öğrendim, ancak bu da çalışmıyor. Yanlış bir şey mi yapıyorum? Neden 401 hatası alıyorum? Bu yöntem artık çalışmıyor mu? Sonra

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); 
} 

cevap

1

Google hesabınız için 2-Step Verification etkinleştirdiyseniz (yani yeni girişler daha sonra giriş yetki girmelisiniz telefonunuza kısa mesajla bir kod gönderdi) siz: Burada

kod bu (64 kodlu baz) normal şifrenizi bu yaklaşımla kullanamazsınız. Bunun yerine, 2 Adımlı Doğrulamayı atlamak için bir Uygulama şifresi oluşturmanız gerekir. Detay için bkz. Sign in using App Passwords. Bir Uygulama şifresi nasıl oluşturulur bölümü, uygulamanızın kullanması için özel, benzersiz bir 16 karakter parola oluşturabileceğiniz App passwords numaralı telefonu yönlendirir.

+0

Teşekkürler, zaten işe almayı başardım. OAuth2 veya benzeri bir saçmalık kullandım ve bir süre sonra bunu hallettim. – Reynevan