Привет всем! Пытаюсь авторизоваться на твиттере уже битый час.. и ничего не получается Думаю, что скорее всего проблема с https. Именно для https прописал сертификат в коде, вроде все по правилам.. Извините за быдляцкий подход к парсингу "Удачной авторизации", но Lacation мне почему то выдавал пустое значение, так бы сделал через него. И по мимо всего подскажите - что сделать с кодировкой конечной странички, чтобы привести ее в нормальный вид? Заранее очень благодарен. Code: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using System.Text.RegularExpressions; using System.Threading; using System.Web; using System.Security.Cryptography.X509Certificates; namespace Twit_chenge_nick_to_ask { class Program { static void Main(string[] args) { Console.WriteLine("Enter для старта"); Console.ReadKey(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://twitter.com/download/?lang=ru&logged_out=1"); request.Credentials = CredentialCache.DefaultCredentials; X509Certificate cer = X509Certificate.CreateFromCertFile("twitter.cer"); request.ClientCertificates.Add(cer); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string html = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd(); string pattern_auth = "<input type=\"hidden\" value=\"(.*)\" name=\"authenticity_token\"/>"; Regex regex_auth = new Regex(pattern_auth); Match match_auth = regex_auth.Match(html); string sCookies = ""; sCookies = response.Headers["Set-Cookie"]; //Console.WriteLine(sCookies); //////////// HttpWebRequest myHttpWebRequest1 = (HttpWebRequest)HttpWebRequest.Create("https://twitter.com/sessions"); myHttpWebRequest1.Credentials = CredentialCache.DefaultCredentials; myHttpWebRequest1.ClientCertificates.Add(cer); myHttpWebRequest1.Method = "POST"; myHttpWebRequest1.Referer = "https://twitter.com/download/?lang=ru&logged_out=1"; myHttpWebRequest1.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1"; myHttpWebRequest1.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; myHttpWebRequest1.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); myHttpWebRequest1.ContentType = "application/x-www-form-urlencoded"; myHttpWebRequest1.Headers.Add(HttpRequestHeader.Cookie, sCookies); string sQueryString = HttpUtility.UrlEncode("session%5Busername_or_email%5D=LOGIN&session%5Bpassword%5D=PASS&remember_me=1&scribe_log=&redirect_after_login=&authenticity_token=" + match_auth.Groups[1].ToString()); byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString); myHttpWebRequest1.ContentLength = ByteArr.Length; myHttpWebRequest1.GetRequestStream().Write(ByteArr, 0, ByteArr.Length); // делаем запрос HttpWebResponse myHttpWebResponse1 = (HttpWebResponse)myHttpWebRequest1.GetResponse(); html = new StreamReader(myHttpWebResponse1.GetResponseStream()).ReadToEnd(); string pattern_auth1 = "<button id=\"global-(.*)-tweet-button\" type=\"button\" class=\"btn btn-tweet js-global-new-tweet js-hover js-tooltip\" data-placement=\"bottom\" data-component-term=\"new_tweet_button\" title=\""; Regex regex_auth1 = new Regex(pattern_auth1); Match match_auth1 = regex_auth.Match(html); //match_auth1.Groups[1].ToString() if (match_auth1.Groups[1].ToString() == "new") { Console.WriteLine("Авторизовались!"); } System.IO.File.AppendAllText("html.txt", html + "\n"); } } }
вообще хотелось бы закончить начатое.. по части апи: я все верно нашел? https://dev.twitter.com/docs/api/1.1 и хотелось бы посомтреть на пример авторизации через апи.
Нелогично при наличии хороших инструментов, поддерживаемых самими разработчиками twitter. К сожалению, на C# не могу скинуть примеры, писал на php. Но на хабре есть хорошая статья http://habrahabr.ru/post/103365/
читал только что подобную статью на хабре http://habrahabr.ru/post/86846/ если честно, я видимо чего-то не понимаю, но блин_) тут я не увидел ни одного параметра где нужен логин и пароль от аккаунта) только токены и секретные ключи с пинами)
Так в этом и смысл API. Человек даёт разрешение на использование своего аккаунта твоим приложением, ты получаешь токен, с помощью него "общаешься" с аккаунтом. Никаких логинов\паролей.
Писал чекер для себя когда-то, вот кусочки с него(vb.net): http://pastebin.com/DmexTGdF (базовый функционал чекера) http://pastebin.com/NZ8hBpC4 (небольшой класс, имитирующий браузер. Криво написан, но работает) Надеюсь поможет.
ТС, может проблема в этом? http://www.infernodevelopment.com/expect-100-continue-header-twitter-api-error-using-php-curl