2016-04-05 4 views
0

Я пытаюсь получить канал Atom для учетной записи электронной почты, используя HttpClient. Прежде чем я попытался получить mail.google.com и использовать их с обычным HttpClientHandler, но это не сработало.Получение фида Atom Atom с HttpClient

Я искал решение и смог выяснить, что я могу использовать `Авторизованный заголовок для передачи учетных данных на сервер, но это тоже не работает. Я делаю что-то неправильно? Почему я ошибся в gtting 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

Если вы включили 2-Step Verification для вашей учетной записи Google (т.е. новые логины отправить код в виде текстового сообщения на телефон, который вы должны затем ввести санкционировать логин), то вы с этим подходом не может использовать обычный (базовый 64) обычный пароль. Вместо этого вы должны создать пароль приложения, чтобы обойти двухэтапную аутентификацию. Подробнее см. В разделе Sign in using App Passwords. Как сгенерировать пароль приложения раздел направляет вас на App passwords, где вы можете создать собственный уникальный 16-символьный пароль для вашего приложения.

+0

Спасибо, мне уже удалось заставить его работать. Я использовал OAuth2 или какую-то такую ​​глупость, и через некоторое время мне удалось это решить. – Reynevan

Смежные вопросы