private void buttonRequestTokenAndPin_Click(object sender, EventArgs e) { try { string url; string key, secret; if (this.comboBoxTarget.SelectedIndex == 1) { key = textBoxConsumerKey.Text; secret = textBoxConsumerSecret.Text; url = "https://api.etrade.com/"; } else { key = textBoxSandboxKey.Text; secret = textBoxSandBoxSecret.Text; url = "https://apisb.etrade.com/"; } Manager manager = new Manager(); manager["consumer_key"] = key; manager["consumer_secret"] = secret; OAuthResponse requestToken = manager.AcquireRequestToken(url + "oauth/request_token", "POST"); textBoxResponse.Text = "Request Token succeeded" + Environment.NewLine; // +requestToken.AllText; // <- shows the response string responseToken = requestToken["oauth_token"]; string responseSecret = requestToken["oauth_token_secret"]; string authorizeURL = "https://us.etrade.com/e/t/etws/authorize?key=" + manager["consumer_key"] + "&token=" + requestToken["oauth_token"]; System.Diagnostics.Process.Start(authorizeURL); FormGetVerifyKey form = new FormGetVerifyKey(); if (form.ShowDialog() == DialogResult.OK) { string pin = form.Pin; manager = new Manager(); manager["consumer_key"] = key; manager["consumer_secret"] = secret; manager["token"] = responseToken; manager["token_secret"] = responseSecret; // Now get access token string URL_ACCESS_TOKEN = url + "oauth/access_token"; string sentHeader = ""; try { var responseAuth = manager.AcquireAccessToken(URL_ACCESS_TOKEN, "POST", pin, out sentHeader); textBoxResponse.Text = responseAuth.AllText; } catch (Exception ex) { textBoxResponse.Text += Environment.NewLine + "Get Access Token Failed"; textBoxResponse.Text += Environment.NewLine + "Sent: " + sentHeader + Environment.NewLine; textBoxResponse.Text += Environment.NewLine + "Exception" + Environment.NewLine + ex.Message; return; } } } catch (Exception ex) { textBoxResponse.Text = "Exception" + Environment.NewLine + ex.Message; return; } }
public async Task <bool?> Init(MetroWindow win) { try { parentWindow = win as MainWindow; authMgr = new Manager(); authMgr["consumer_key"] = ConsumerKey; authMgr["consumer_secret"] = ConsumerSecret; authMgr.AcquireRequestToken(RequestTokenURL, "POST"); MetroDialogSettings settings = new MetroDialogSettings() { AnimateHide = true, AnimateShow = true, AffirmativeButtonText = "확인", NegativeButtonText = "종료" }; MessageDialogResult result = await DialogManager.ShowMessageAsync(parentWindow, "인증", "인증을 위해 웹브라우저를 통해 트위터에 로그인합니다.", MessageDialogStyle.AffirmativeAndNegative, settings); if (result == MessageDialogResult.Affirmative) { System.Diagnostics.Process.Start($"{RequestPinURL}{authMgr["token"]}"); settings = new MetroDialogSettings() { AnimateHide = true, AnimateShow = true, AffirmativeButtonText = "인증", NegativeButtonText = "취소 및 종료" }; string pin = await DialogManager.ShowInputAsync(parentWindow, "PIN", "웹브라우저 상에 표시된 PIN을 입력합니다.", settings); try { authMgr.AcquireAccessToken(AccessTokenURL, "POST", pin); } catch (Exception ex) { parentWindow.Close(); } IsInit = true; // Get Screen Name dynamic obj = await GetJson("https://api.twitter.com/1.1/account/settings.json", "GET"); string name = obj.screen_name; // GetProfile dynamic json = await GetJson($"https://api.twitter.com/1.1/users/show.json?screen_name={name}", "GET"); parentWindow.UserNameBlock.Text = json.name; parentWindow.ScreenNameBlock.Text = $"@{json.screen_name}"; parentWindow.ProfileDescBlock.Text = json.description; string imageUrl = json.profile_image_url; ProfileImage = new BitmapImage(); ProfileImage.BeginInit(); ProfileImage.UriSource = new Uri(imageUrl.Replace("_normal", "")); ProfileImage.DownloadCompleted += (s, ev) => OnPropertyChanged("ProfileImage"); ProfileImage.EndInit(); } else { parentWindow.Close(); } return(IsInit); } catch (Exception e) { await DialogManager.ShowMessageAsync(parentWindow, "Error", $"= Message{e.Message}\n\n= Stack Trace\n{e.StackTrace}"); IsInit = false; return(false); } }