-
Code's Tags
-
Your Codes
-
Reffers
-
Linked Codes
|
Code:
Short link for Twitter:
HTML:
HTML view:
Copy Source | Copy HTML- /// <summary>
- /// ПроÑÑ‚Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° залогинитÑÑ
- /// </summary>
- /// <param name="user"></param>
- /// <returns></returns>
- public override bool LogInto(UserAccaunt user)
- {
- try
- {
- OAuthTokens tokens = Configuration.GetTokens(user.username);
- if(String.IsNullOrEmpty(tokens.AccessToken))
- {
- //нет ключа, производим аутентификацию.
- //залогинимÑÑ Ð² твиттер, получим куку и передадим ее дальше
- //0
- OAuthTokenResponse response = OAuthUtility.GetRequestToken(tokens.ConsumerKey,
- tokens.ConsumerSecret, String.Empty);
- //1
- HttpWebRequest myHttpWebRequest = (HttpWebRequest)
- WebRequest.Create(OAuthUtility.BuildAuthorizationUri(response.Token));
- myHttpWebRequest.Method = "GET";
- myHttpWebRequest.AllowAutoRedirect = false;
- // myHttpWebRequest.Headers.Add(HttpRequestHeader.Cookie, sCookie);
- HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
- string result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding).ReadToEnd();
- sCookie = CookieParse(myHttpWebResponse.Headers[HttpResponseHeader.SetCookie]);
- myHttpWebResponse.Close();
- ///////////////////////
- Match m = new Regex(@"<input.*?name\W+authenticity_token.+?value\W+(\w+)\W", Regexoptions).Match(result);
- if (!m.Success) throw new Exception("Twitter authenticity_token problems!");
- myHttpWebRequest = MakeRequest("https://twitter.com/oauth/authorize");
- myHttpWebRequest.AllowAutoRedirect = false;
- myHttpWebRequest.Method = "POST";
- myHttpWebRequest.Referer = "http://twitter.com";
- string sQueryString =
- String.Format(
- "authenticity_token={0}&return_to_ssl=false&session%5Busername_or_email%5D={1}&session%5Bpassword%5D={2}&oauth_token={3}",
- m.Groups[1].Value,
- user.username,
- user.password,
- response.Token
- );
- //***************//
- byte[] byteArr = _encoding.GetBytes(sQueryString);
- myHttpWebRequest.ContentLength = byteArr.Length;
- myHttpWebRequest.GetRequestStream().Write(byteArr, 0, byteArr.Length);
- /////////////////////////
- myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
- sCookie = CookieParse(myHttpWebResponse.Headers[HttpResponseHeader.SetCookie]);
- result = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding).ReadToEnd();
- myHttpWebResponse.Close();
- //в теории отÑюда нужно извлечь PIN Ð´Ð»Ñ Ð²Ñтавки
- m = new Regex(@"\Woauth_pin\W\D+(\d+)\D", Regexoptions).Match(result);
- if(!m.Success) throw new Exception("не удалоÑÑŒ получить PIN!");
-
- response = OAuthUtility.GetAccessToken(tokens.ConsumerKey,
- tokens.ConsumerSecret, response.Token, m.Groups[1].Value);
- if (response != null)
- {
- //ÑохранÑем токен, чтобы Ñледующий раз не проходить вÑÑŽ цепочку.
- Configuration.SetTokens(user.username, response);
- }
- }
- LogedInAs = user;
- //Log("Twitter uses only OAuth2.0 authentification. Take care.");
- return true;
- }catch(Exception e1)
- {
- Log("Twitter OAuth "+e1.Message);
- return false;
- }
- }
|