public TwitterIdentity RequestAccessToken(String authToken, String verifier, Dictionary <String, String> parameters) { UriBuilder newUri = new UriBuilder(AccessTokenUrl); newUri.Query = ((newUri.Query.Length > 0) ? "&" : "") + String.Join("&", parameters.Select(kv => String.Concat(Utility.UrlEncode(kv.Key), "=", Utility.UrlEncode(kv.Value))).ToArray()); Verifier = verifier; String result = ReadResponse(RequestInternal(newUri.Uri, HttpMethod.POST, authToken, String.Empty)); NameValueCollection returnValues = new NameValueCollection(); foreach (var keyValue in result.Split(new[] { '&', ';' }, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Split(new[] { '=' }, 2)) .Where(p => p.Length == 2)) { returnValues[keyValue[0]] = keyValue[1]; } TwitterIdentity identity = new TwitterIdentity() { Token = returnValues["oauth_token"], TokenSecret = returnValues["oauth_token_secret"], ScreenName = returnValues["screen_name"], UserId = Int32.Parse(returnValues["user_id"]) }; return(identity); }
/// <summary> /// TwitterService クラスのインスタンスをOAuthを利用する設定で初期化します。 /// </summary> /// <param name="twitterIdentity"></param> public TwitterService(String clientKey, String secretKey, TwitterIdentity twitterIdentity) { OAuthClient = new TwitterOAuth(clientKey, secretKey) { Token = twitterIdentity.Token, TokenSecret = twitterIdentity.TokenSecret }; _userName = twitterIdentity.ScreenName; Initialize(); }
public TwitterIdentity RequestAccessToken(String authToken, String verifier) { Verifier = verifier; String result = ReadResponse(RequestInternal(AccessTokenUrl, HttpMethod.GET, authToken, String.Empty)); NameValueCollection returnValues = new NameValueCollection(); foreach (var keyValue in result.Split(new[] { '&', ';' }, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Split(new[] { '=' }, 2)) .Where(p => p.Length == 2)) { returnValues[keyValue[0]] = keyValue[1]; } TwitterIdentity identity = new TwitterIdentity() { Token = returnValues["oauth_token"], TokenSecret = returnValues["oauth_token_secret"], ScreenName = returnValues["screen_name"], UserId = Int32.Parse(returnValues["user_id"]) }; return(identity); }
public TwitterAuthenticateResult(User user, TwitterIdentity identity) : base() { User = user; Identity = identity; }
protected override void OnMessageReceivedFromClient(MessageReceivedEventArgs e) { if (_isFinished) { return; } PrivMsgMessage privMsg = e.Message as PrivMsgMessage; if (privMsg != null) { if (_identity == null) { // step 1 try { _identity = _twitterOAuth.RequestAccessToken(authToken, privMsg.Content.Trim()); } catch (WebException we) { SendMessage("アプリケーションのアクセスは許可されませんでした。再接続してやり直してください。"); return; } SendMessage(String.Format("ユーザー {0} (ID:{1})として認証されました。", _identity.ScreenName, _identity.UserId)); SendMessage("IRCクライアントに設定するためのパスワードを入力してください。"); } else { // step 2 String password = privMsg.Content.Trim(); try { #if HOSTING var config = Config.LoadConfig(_identity.UserId.ToString()); #else var config = Config.LoadConfig(_identity.ScreenName.ToString()); #endif config.OAuthAccessToken = _identity.Token; config.OAuthTokenSecret = _identity.TokenSecret; config.OAuthUserPasswordHash = Utility.GetMesssageDigest(password); #if HOSTING Config.SaveConfig(_identity.UserId.ToString(), config); SendMessage( String.Format( "OAuth用のパスワードを設定しました。IRCクライアントの接続設定のユーザID(ログイン名)に {0} を、パスワードに設定したパスワードを指定して再接続してください。", _identity.UserId)); #else Config.SaveConfig(_identity.ScreenName.ToString(), config); SendMessage("OAuth用のパスワードを設定しました。IRCクライアントの接続設定のパスワードに設定したパスワードを指定して再接続してください。"); #endif } catch (IOException ie) { SendMessage("設定ファイルにアクセスする際にエラーが発生しました。(" + ie.Message + ")"); return; } Session session = _server.GetSession(_identity.UserId.ToString()) as Session; if (session != null) { session.LoadConfig(); // すでにセッションがある場合には設定を再読込 } _isFinished = true; } } }
public TwitterIdentity RequestAccessToken(String authToken, String verifier, Dictionary<String, String> parameters) { UriBuilder newUri = new UriBuilder(AccessTokenUrl); newUri.Query = ((newUri.Query.Length > 0) ? "&" : "") + String.Join("&", parameters.Select(kv => String.Concat(Utility.UrlEncode(kv.Key), "=", Utility.UrlEncode(kv.Value))).ToArray()); Verifier = verifier; String result = ReadResponse(RequestInternal(newUri.Uri, HttpMethod.POST, authToken, String.Empty)); NameValueCollection returnValues = new NameValueCollection(); foreach (var keyValue in result.Split(new[] { '&', ';' }, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Split(new[] { '=' }, 2)) .Where(p => p.Length == 2)) { returnValues[keyValue[0]] = keyValue[1]; } TwitterIdentity identity = new TwitterIdentity() { Token = returnValues["oauth_token"], TokenSecret = returnValues["oauth_token_secret"], ScreenName = returnValues["screen_name"], UserId = Int32.Parse(returnValues["user_id"]) }; return identity; }
public TwitterIdentity RequestAccessToken(String authToken, String verifier) { Verifier = verifier; String result = ReadResponse(RequestInternal(AccessTokenUrl, HttpMethod.GET, authToken, String.Empty)); NameValueCollection returnValues = new NameValueCollection(); foreach (var keyValue in result.Split(new[] { '&', ';' }, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Split(new[] { '=' }, 2)) .Where(p => p.Length == 2)) { returnValues[keyValue[0]] = keyValue[1]; } TwitterIdentity identity = new TwitterIdentity() { Token = returnValues["oauth_token"], TokenSecret = returnValues["oauth_token_secret"], ScreenName = returnValues["screen_name"], UserId = Int32.Parse(returnValues["user_id"]) }; return identity; }