public authPage() { InitializeComponent(); session = OAuth.AuthorizeAsync(Key.consumerKey, Key.consumerSecret).Result; Device.OpenUri(new Uri(session.AuthorizeUri.AbsoluteUri)); }
public static async Task <OAuth.OAuthSession> CreateAuthenticationSessionAsync() { try { var session = await OAuth.AuthorizeAsync(SecretParameters.ConsumerKey, SecretParameters.ConsumerSecret); return(session); } catch (HttpRequestException e) { CommonMethods.Notify("ネットワークに正常に接続できませんでした", NotificationType.Error); DebugConsole.Write(e); return(null); } catch (WebException e) { CommonMethods.Notify("ネットワークに正常に接続できませんでした", NotificationType.Error); DebugConsole.Write(e); return(null); } catch (Exception e) { CommonMethods.Notify("エラー.", NotificationType.Error); DebugConsole.Write(e); return(null); } }
private async void initAuthrize() { try { var settings = ApplicationData.Current.RoamingSettings; session = await OAuth.AuthorizeAsync((string)settings.Values["ApiKey"] , (string)settings.Values["ApiSecret"]); authWeb.Source = session.AuthorizeUri; session_url = session.AuthorizeUri; } catch (Exception ex) { pinTextBox.Text = "sippsi"; // in this example we assume the parent of the UserControl is a Popup Popup p = this.Parent as Popup; // close the Popup if (p != null) { p.IsOpen = false; } //Close(); } }
internal async void Initialize() { ShowingStatuses = new Queue <Status>(); Setting = new Kbtter3Setting(); StreamManager = new List <IDisposable>(); Plugins = new List <Kbtter3PluginProvider>(); PluginMonitoringToken = new object(); Logs = new List <string>(); if (!Directory.Exists(CacheFolderName)) { Directory.CreateDirectory(CacheFolderName); } if (!Directory.Exists(PluginFolderName)) { Directory.CreateDirectory(PluginFolderName); } Setting = Kbtter3Extension.LoadJson <Kbtter3Setting>(App.ConfigurationFileName, Setting); OAuthSession = await OAuth.AuthorizeAsync(Setting.Consumer.Key, Setting.Consumer.Secret); OnStatus += NotifyStatusUpdate; OnEvent += NotifyEventUpdate; OnIdEvent += NotifyIdEventUpdate; OnDirectMessage += NotifyDirectMessageUpdate; LogInformation("Model層初期化完了"); SaveLog(); RaisePropertyChanged("AccessTokenRequest"); }
private async void token_session() { var settings = ApplicationData.Current.RoamingSettings; session = await OAuth.AuthorizeAsync((string)settings.Values["ApiKey"] , (string)settings.Values["ApiSecret"]); }
public async Task <IActionResult> Login() { string callbackUrl = $"{Request.Scheme}://{Request.Host}{Request.Path}".Replace("Login", "Callback"); var session = await OAuth.AuthorizeAsync(Constant.ConsumerKey, Constant.ConsumerSecret, callbackUrl); TempData[requestToken] = session.RequestToken; TempData[requestTokenSecret] = session.RequestTokenSecret; return(Redirect(session.AuthorizeUri.AbsoluteUri)); }
private async void InitAsync(object sender, RoutedEventArgs e) { session = await OAuth.AuthorizeAsync( __Private.ConsumerKey, __Private.ConsumerSecret ); AuthorizeUrl.Text = session.AuthorizeUri.ToString(); }
/// <summary> /// OAuth認証 /// </summary> /// <returns>認証が成功して有効なトークンが取得できればtrue、そうでない場合はfalse</returns> private async Task <bool> OAuthAsync() { //コールバック用カスタムURLスキーマ string callback = CustomScheme + "://" + CustomSchemeHost; //認証 var session = await OAuth.AuthorizeAsync(this.APIkey, this.APIsecret, callback); //ブラウザで認証ページを開いてコールバックでパラメータを取得 var launchedUri = await DependencyService.Get <IAppHandler>().LaunchUri(session.AuthorizeUri.AbsoluteUri); if (string.IsNullOrEmpty(launchedUri) == true) { return(false); } //クエリパラメータ文字列を取得 string query = new Uri(launchedUri).GetComponents(UriComponents.Query, UriFormat.UriEscaped); //クエリパラメータをパース var parameters = string.IsNullOrEmpty(query) ? new Dictionary <string, string>() : query.Split('&') .Select(p => p.Split('=')) .ToDictionary(p => p[0], p => 1 < p.Length ? Uri.UnescapeDataString(p[1]) : null); //oauth_token と oauth_verifierを取得 string oauth_token, oauth_verifier; var o1 = parameters.TryGetValue("oauth_token", out oauth_token); var o2 = parameters.TryGetValue("oauth_verifier", out oauth_verifier); //パラメータが存在しなければnullを返す if (o1 == false || o2 == false) { return(false); } Tokens t = null; try { //トークン取得 t = await session.GetTokensAsync(oauth_verifier); // トークン有効性確認 var res = await t.Account.VerifyCredentialsAsync(); } catch (Exception ex) { //トークンが有効でないときはnullに t = null; this.LastErrMessage = ex.Message; } this.Token = t; return(t != null); }
/// <summary> /// 指定された ConsumerKey, ConsumerSecret から初回認証を行います。 /// </summary> /// <param name="owner">PIN 入力ダイアログの親ウィンドウ</param> public async Task AuthorizeAsync(string consumerKey, string consumerSecret, IWin32Window owner = null) { if (string.IsNullOrEmpty(consumerKey) || string.IsNullOrEmpty(consumerSecret)) { throw new ArgumentNullException(); } else if (Tokens != null && User != null) { throw new InvalidOperationException("既に認証されています。"); } else { OAuth.OAuthSession oAuthSession = await OAuth.AuthorizeAsync(consumerKey, consumerSecret); Process.Start(oAuthSession.AuthorizeUri.ToString()); using (PinDialog dialog = new PinDialog()) { DialogResult result = dialog.ShowDialog(owner); if (result == DialogResult.OK) { Tokens = await OAuth.GetTokensAsync(oAuthSession, dialog.Pin); User = await Tokens.Account.VerifyCredentialsAsync(); if (User == null) { throw new AuthorizationFailedException("ユーザ認証処理で不明なエラーが発生しました。"); } else { // 短縮URLの文字数確認用 Configurations config = await Tokens.Help.ConfigurationAsync(); AccountData = new TwitterAccountData() { ConsumerKey = Tokens.ConsumerKey, ConsumerSecret = Tokens.ConsumerSecret, AccessToken = Tokens.AccessToken, AccessSecret = Tokens.AccessTokenSecret, MediaPossiblySensitive = false, ShortUrlLength = config.ShortUrlLength, ShortUrlLengthHttps = config.ShortUrlLengthHttps, ConfigUpdatedAt = DateTime.Now }; } } else { throw new OperationCanceledException(); } } } }
public async Task <IActionResult> Auth() { var session = await OAuth.AuthorizeAsync(twitterOptions.ClientId, twitterOptions.ClientSecret); return(Ok(new { session.AuthorizeUri, session.RequestToken, session.RequestTokenSecret })); }
public async Task <OAuthSessionModel> AuthorizeAsync(string consumerKey, string consumerSecret) { session = await OAuth.AuthorizeAsync(consumerKey, consumerSecret); return(new OAuthSessionModel(session.AuthorizeUri) { ConsumerKey = session.ConsumerKey, ConsumerSecret = session.ConsumerSecret, RequestToken = session.RequestToken, RequestTokenSecret = session.RequestTokenSecret }); }
public async Task Auth(AuthArguments arguments) { var session = await OAuth.AuthorizeAsync(arguments.ClientId, arguments.ClientSecret); File.WriteAllText(".twitterToken", session.RequestToken); File.WriteAllText(".twitterSecret", session.RequestTokenSecret); Console.WriteLine($"Request Token: {session.RequestToken}"); Console.WriteLine($"Request Secret: {session.RequestTokenSecret}"); Console.WriteLine(); Console.WriteLine($"Open the following url to get the pin: {session.AuthorizeUri}"); }
/// <summary> /// 認証用トークンを取得します /// </summary> private async void InitAuth() { var bindings = DataContext as db; session = await OAuth.AuthorizeAsync(Twitter.CK, Twitter.CS); bindings.AuthUrl = session.AuthorizeUri; AuthLinkText.Text = session.AuthorizeUri.ToString(); AuthLinklink.NavigateUri = session.AuthorizeUri; Console.WriteLine(bindings.AuthUrl.ToString()); pin.IsEnabled = true; //authButton.IsEnabled = true; }
private async void button_OAuth_Click(object sender, EventArgs e) { button_OAuth.Enabled = false; try { session = await OAuth.AuthorizeAsync(SecretResources.CK, SecretResources.CS); Process.Start(session.AuthorizeUri.ToString()); } catch (Exception) { MessageBox.Show("Failed to authorize. \nPlease check your internet connection.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } button_OAuth.Enabled = true; }
public OAuthWindow() { InitializeComponent(); this.Loaded += async(a, e) => { Session = await OAuth.AuthorizeAsync(AuthKeys.consumerKey, AuthKeys.consumerSecert); Process.Start(Session.AuthorizeUri.ToString()); }; Observable.FromEventPattern <RoutedEventArgs>(Auth, "Click") .Where(_ => CodeTextBox.Text.Length == 7) .Subscribe(async _ => await SetAuthAsync()); Observable.FromEventPattern <KeyEventArgs>(CodeTextBox, "KeyDown") .Where(x => x.EventArgs.Key == Key.Enter && CodeTextBox.Text.Length == 7) .Subscribe(async _ => await SetAuthAsync()); }
public async Task AuthAsync(Func <Uri, Uri, Task <string> > getPin) { if (this.User.IsAuth) { return; } var session = await OAuth.AuthorizeAsync(Constants.ConsumerKey, Constants.ConsumerSecret, Constants.CallbackUrl); var pin = await getPin(session.AuthorizeUri, new Uri(Constants.CallbackUrl)); if (string.IsNullOrWhiteSpace(pin)) { return; } this.User.SaveToken(await session.GetTokensAsync(pin)); }
public async Task <IActionResult> ShowAuthWindow() { OAuthSession session = await OAuth.AuthorizeAsync(ConsumerKey, ConsumerSecret); HttpContext.Session.SetObject("key", session); //dotnetCoreでは使えないらしい? //System.Diagnostics.Process.Start(session.AuthorizeUri.AbsoluteUri); var url = session.AuthorizeUri.AbsoluteUri; try { Process.Start(url); } catch { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { //Windowsのとき url = url.Replace("&", "^&"); Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true }); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { //Linuxのとき Process.Start("xdg-open", url); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { //Macのとき Process.Start("open", url); } else { throw; } } return(Ok()); }
public SettingsPageViewModel(INavigationService navigationService) : base(navigationService) { Title = "Settings"; IsVisibleUserIcon = UserIcon.Select(x => x != null) .ToReactiveProperty(); StartingAuthCommand.Subscribe(async _ => { TwitterUser.Session = await OAuth.AuthorizeAsync(TwitterUser.APIKey, TwitterUser.APISecret); Process.Start(TwitterUser.Session.AuthorizeUri.AbsoluteUri); }); UserAuthCommand.Subscribe(async _ => { try { TwitterUser.Tokens = await TwitterUser.Session.GetTokensAsync(PinCode.Value); if (TwitterUser.Tokens.Account.VerifyCredentialsAsync() != null) { var response = await TwitterUser.Tokens.Account.VerifyCredentialsAsync(); userIcon.Value = ImageSource.FromUri(new Uri(response.ProfileImageUrl)); IsVisibleUserIcon.Value = true; var builder = new StringBuilder(); builder.AppendLine($"UserName : { response.Name }"); builder.Append($"UserID : @{ response.ScreenName }"); userInfo.Value = builder.ToString(); } else { App.Logger.Warn("ログイン認証失敗"); } } catch (Exception ex) { App.Logger.Error(ex.Message + Environment.NewLine + ex.StackTrace); } }); }
private static Tokens GetTwitterTokens() { Tokens token = null; try { var consumerKey = Environment.GetEnvironmentVariable("twitterConsumerKey"); var consumerSecret = Environment.GetEnvironmentVariable("twitterConsumerSecret"); var twitterAuthoriser = new TwitterAuthoriserConsole(); var session = OAuth.AuthorizeAsync(consumerKey, consumerSecret).GetAwaiter().GetResult(); var pincode = twitterAuthoriser.GetPinCode(session.AuthorizeUri); token = session.GetTokensAsync(pincode).GetAwaiter().GetResult(); } catch (Exception e) { Logger.Error($"Something went wrong whilst connecting to Twitter."); Logger.Debug($"Message:\r\n{e.Message}\r\nStack trace:\r\n{e.StackTrace}"); } return(token); }
/// <summary> /// 1st.Step OnAuthorize /// </summary> private async void OnAuthorize(object sender, Windows.UI.Xaml.RoutedEventArgs args) { Session = await OAuth.AuthorizeAsync(API_CONSUMER_TOKEN, API_CONSUMER_SECRET); string uriToLaunch = Session.AuthorizeUri.ToString(); var uri = new Uri(uriToLaunch); var success = await Windows.System.Launcher.LaunchUriAsync(uri); if (success) { // URI launched _anyMessage.Text = actorLines[Const.ActorLinesMain["PINコードを入力するんだ。"]]; return; } else { // URI launch failed MessageDialog md = new MessageDialog("Failed External Web Browser Open."); await md.ShowAsync(); _anyMessage.Text = actorLines[Const.ActorLinesMain["ジオンの制空権内ということを自覚しろ!"]]; } }
public async void SetupLogin() { session = await OAuth.AuthorizeAsync(API_KEY, API_SECRET); Device.OpenUri(new Uri(session.AuthorizeUri.AbsoluteUri)); }
public DetailPageViewModel(INavigationService navigationService) { // TODO: ViewModelからじゃだめなんかな?いやわからんぞー //var button = FindByName<StackLayout>("button"); //StackLayout im = (StackLayout) //button; //Debug.WriteLine("** 2: Text = " + Text); //Debug.WriteLine("** 2: Note = " + Note); //Debug.WriteLine("** 2: Title = " + Title); //MyCommand = new DelegateCommand(async () => await navigationService.NavigateAsync("MyMyPage")); // ------------------------ //var auth = new OAuth2Authenticator( // Constants.ClientId, // Constants.ClientSecret, // Constants.Scope, // new Uri(Constants.AuthorizeUrl), // new Uri(Constants.RedirectUrl), // new Uri(Constants.AccessTokenUrl)); //var auth = new OAuth2Authenticator( //CONSUMER_KEY, // CONSUMER_SECRET, // "", // new Uri("https://api.twitter.com/oauth/authorize"), // new Uri("https://twitter.com/"), // new Uri("https://api.twitter.com/oauth/access_token") //); var auth = new OAuth1Authenticator( //Constants.TwitterConsumerKey, //Constants.TwitterConsumerSecret, CONSUMER_KEY, CONSUMER_SECRET, new Uri("https://api.twitter.com/oauth/request_token"), new Uri("https://api.twitter.com/oauth/authorize"), new Uri("https://api.twitter.com/oauth/access_token"), new Uri("http://twitter.com") ); TwetterLoginCommand = new DelegateCommand(async() => { //Debug.WriteLine("* DelegateCommand *"); // TODO: これはユーザーごとにならない // OAuth2Token apponly = await OAuth2.GetTokenAsync(CONSUMER_KEY, CONSUMER_SECRET); //Debug.WriteLine("* apponly = " + apponly); // Twitter アプリ連携認証ページ Uri の取得 session = await OAuth.AuthorizeAsync(CONSUMER_KEY, CONSUMER_SECRET); Debug.WriteLine("* session = " + session); // アプリ連携認証ページに遷移 Device.OpenUri(new Uri(session.AuthorizeUri.AbsoluteUri)); // TODO: Custom Url Scheme は使えませんかぁぁぁぁ 困るぅぅぅぅ // Token を作る。 //Tokens.Create("consumerKey", "consumerSecret", "accessToken", "accessSecret"); }); TwetterTokenCommand = new DelegateCommand(async() => { Debug.WriteLine("* TwetterTokenCommand"); string pin = NewItemsText.Value; Debug.WriteLine("* pin = " + pin); if (!string.IsNullOrEmpty(pin) && pin.Length == 7) { tokens = await CoreTweet.OAuth.GetTokensAsync(session, pin); Debug.WriteLine("!!! tokens = " + tokens); } }); // TODO: これって何をTweetするの?webのリンクとかあんの? // TODO: twitterアプリを呼び出したりできるのか? TweetCommand = new DelegateCommand(async() => { Debug.WriteLine("* TweetCommand"); string tweetText = TweetText.Value; Debug.WriteLine("* tweetText = " + tweetText); if (!string.IsNullOrEmpty(tweetText)) { await tokens.Statuses.UpdateAsync(status => tweetText); } }); //this.AddNewItem = this.NewItemsText // .Select(x => !string.IsNullOrWhiteSpace(x)) // NewItemsText の状況から bool に変換 // .ToReactiveCommand(); TCommand = new DelegateCommand(() => { var baseUrl = "http://twitter.com/share?text="; var param = "My Favorite Item by MANT\\nContent Holder is カンガルーくん"; Debug.WriteLine("* baseUrl = " + baseUrl); Debug.WriteLine("* param = " + param); //var uuu = new Uri(baseUrl + param); //Debug.WriteLine("* uuu = " + uuu); var encodeUrl = WebUtility.UrlEncode(param); Debug.WriteLine("* encodeUrl = " + encodeUrl); // uri 作成 var uri = new Uri(baseUrl + encodeUrl); Debug.WriteLine("* uri = " + uri); // ブラウザで開く Device.OpenUri(uri); }); XACommand = new DelegateCommand(async() => { await navigationService.NavigateAsync("LoginPage"); }); }
public async Task InitializeAsync() { session = await OAuth.AuthorizeAsync(tokens.ConsumerKey, tokens.ConsumerSecret); AuthURI = session.AuthorizeUri.ToString(); }
/// <summary> /// Get access to user's Twitter credentials via PIN-based authentication /// </summary> private async void GetTwitterAuth() { try { // Check if developer set up Twitter integration if (!string.IsNullOrEmpty(_botConfig.TwitterConsumerKey) && !string.IsNullOrEmpty(_botConfig.TwitterConsumerSecret)) { Tokens tokens = new Tokens(); // Check existing credentials if (!string.IsNullOrEmpty(_botConfig.TwitterAccessToken) && !string.IsNullOrEmpty(_botConfig.TwitterAccessSecret)) { tokens = Tokens.Create( _botConfig.TwitterConsumerKey, _botConfig.TwitterConsumerSecret, _botConfig.TwitterAccessToken, _botConfig.TwitterAccessSecret ); } // Get authentication to Twitter account if (string.IsNullOrEmpty(_botConfig.TwitterAccessToken) || string.IsNullOrEmpty(_botConfig.TwitterAccessSecret)) { // create session OAuth.OAuthSession session = await OAuth.AuthorizeAsync(_botConfig.TwitterConsumerKey, _botConfig.TwitterConsumerSecret); string url = session.AuthorizeUri.AbsoluteUri; Process process = new Process(); process.StartUrlCrossPlatform(url); // Ask the user to enter the pin code given by Twitter Console.WriteLine("Please enter the PIN given by Twitter (or simply press ENTER to continue using this bot without Twitter):"); string pinCode = Console.ReadLine(); if (!string.IsNullOrWhiteSpace(pinCode)) { // assign tokens tokens = await OAuth.GetTokensAsync(session, pinCode); pinCode = ""; // clear pin code if (tokens != null) { SaveTwitterAccessInfo(tokens.AccessToken, tokens.AccessTokenSecret); if (await VerifyTwitterCredentialsAsync(tokens)) { Console.WriteLine(); Console.WriteLine("Twitter authentication granted for Twitter account (screen name): " + $"{_twitterInstance.ScreenName}"); Console.WriteLine(); } } else { Console.WriteLine(); Console.WriteLine("Warning: Couldn't find Twitter credentials."); Console.WriteLine("Either the PIN code wasn't entered correctly or unknown authentication error occurred"); Console.WriteLine("Continuing without Twitter features..."); Console.WriteLine(); } } else { Console.WriteLine("Warning: PIN code was not provided. Continuing without Twitter features..."); Console.WriteLine(); } } else { if (await VerifyTwitterCredentialsAsync(tokens)) { Console.WriteLine($"Current authenticated Twitter's screen name: {_twitterInstance.ScreenName}"); Console.WriteLine(); } } } else { Console.WriteLine("Warning: Twitter integration not set. Continuing without Twitter features..."); Console.WriteLine(); } } catch (Exception ex) { await _errHndlrInstance.LogError(ex, "TwitchBotApplication", "GetTwitterAuth()", false); } }
/// <summary> /// 登録された情報でクライアントを作成して返します。エラー発生時は null を返します。 /// </summary> /// <param name="showError">エラー発生時にメッセージボックスを出力するか。</param> /// <param name="control">プログレスバーの存在するコントロール。</param> /// <param name="progressBar">進捗状況を表示するプログレスバー。</param> /// <returns>作成したクライアント。エラー発生時は null を返します。</returns> public async Task <Tokens> CreateClient(bool showError, Control control = null, ProgressBar progressBar = null) { // トークンが保存されている場合はそれを使ってクライアント作成する if (Index >= 0) { client = Tokens.Create(SecretDefine.TwitterConsumerKey, SecretDefine.TwitterConsumerSecret, Settings.Default.TwitterAccessTokens[Index], Settings.Default.TwitterAccessTokenSecrets[Index]); var response = await client.Account.VerifyCredentialsAsync(); client.UserId = (long)response.Id; client.ScreenName = response.ScreenName; } else { // アプリケーションの登録 OAuth.OAuthSession session; try { session = await OAuth.AuthorizeAsync(SecretDefine.TwitterConsumerKey, SecretDefine.TwitterConsumerSecret); } catch (Exception e) { logger.ErrorFormat($"Twitter: サーバ接続に失敗 - {e.Message}"); if (showError) { Utilities.ShowError($"Twitter に接続できません。"); } return(null); } control?.Invoke((MethodInvoker)(() => progressBar.Value = 25)); // アクセストークンを取得するために認証ページに裏側で遷移 var webContext = new WebBrowser(); try { webContext.Navigate(session.AuthorizeUri); while (webContext.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); } var all = webContext.Document.All; all.GetElementsByName("session[username_or_email]")[0].InnerText = screenNameOrEMail; all.GetElementsByName("session[password]")[0].InnerText = password; webContext.DocumentCompleted += webBrowser_DocumentCompleted; webContext.Document.GetElementById("allow").InvokeMember("click"); control?.Invoke((MethodInvoker)(() => progressBar.Value = 50)); // PIN コードの取得(実際の処理は webBrowser_DocumentCompleted で行われる) pin = ""; DateTime start = DateTime.Now; while (pin.Length == 0) { Application.DoEvents(); if ((DateTime.Now - start).TotalSeconds > 5) { // 5秒経っても接続できなければタイムアウト throw new Exception("PIN コードの取得でタイムアウトしました。"); } } control?.Invoke((MethodInvoker)(() => progressBar.Value = 75)); // アクセストークンの取得 client = await session.GetTokensAsync(pin); } catch (Exception e) { logger.ErrorFormat($"Twitter: アカウントへの接続に失敗 - {e.Message}"); if (showError) { Utilities.ShowError($"アカウントに接続できません。\nユーザ名(メールアドレス)・パスワードを確認してください。"); } return(null); } } // 各種情報の取得 try { var user = await client.Users.ShowAsync(client.UserId); AccountName = $"{user.ScreenName}@Twitter"; Icon = user.ProfileImageUrl; Streaming = client.Streaming.UserAsObservable().Publish(); } catch (Exception e) { logger.ErrorFormat($"Twitter: ユーザ情報の取得に失敗 - {e.Message}"); if (showError) { Utilities.ShowError($"ユーザ情報を取得できません。"); } return(null); } control?.Invoke((MethodInvoker)(() => progressBar.Value = 100)); return(client); }
private async void BrowseAuthorizeView() { _session = await OAuth.AuthorizeAsync(Config.CONSUMER_KEY, Config.CONSUMER_SECRET, Config.CALLBACK); authWebView.MainFrameUrl = _session.AuthorizeUri.AbsoluteUri; }
private async void AuthorizePopupConfigNextButton_Click(object sender, RoutedEventArgs e) { if (_authorizeStep == AuthorizeStep.TwitterConfig) { var editConsumerKey = AuthorizePopupTwitterEditConsumerKeyCheckBox.IsChecked; string consumerKey; string consumerSecret; string callbackUrl; if (editConsumerKey == true) { consumerKey = AuthorizePopupTwitterConsumerKeyTextBox.Text.Trim(); consumerSecret = AuthorizePopupTwitterConsumerSecretTextBox.Text.Trim(); callbackUrl = "oob"; _urlCallbackAuthorization = false; } else { consumerKey = TwitterConsumerKey; consumerSecret = TwitterConsumerSecret; callbackUrl = "http://cucmber.net/"; _urlCallbackAuthorization = true; } if (string.IsNullOrWhiteSpace(consumerKey) || string.IsNullOrWhiteSpace(consumerSecret)) { await new MessageDialog(_resourceLoader.GetString("AuthorizePopup_OAuthAuthorizeError")) .ShowAsync(); return; } AuthorizePopupConfigNextButton.IsEnabled = false; try { _twitterOAuthSettion = await OAuth.AuthorizeAsync(consumerKey, consumerSecret, callbackUrl); } catch { await new MessageDialog(_resourceLoader.GetString("AuthorizePopup_OAuthAuthorizeError")) .ShowAsync(); return; } finally { AuthorizePopupConfigNextButton.IsEnabled = true; } AuthorizePopupAuthorizeWebView.Navigate(_twitterOAuthSettion.AuthorizeUri); VisualStateManager.GoToState(this, "Authorize", true); VisualStateManager.GoToState(this, "AuthorizeNormal", true); _authorizeStep = AuthorizeStep.TwitterAuthorize; } else if (_authorizeStep == AuthorizeStep.MastodonConfig) { var instance = AuthorizePopupMastodonInstanceTextBox.Text; var appName = AuthorizePopupMastodonAppNameTextBox.Text; if (string.IsNullOrWhiteSpace(appName) || string.IsNullOrWhiteSpace(instance)) { await new MessageDialog(_resourceLoader.GetString("AuthorizePopup_OAuthAuthorizeError")) .ShowAsync(); return; } var url = string.Empty; AuthorizePopupConfigNextButton.IsEnabled = false; try { _mastodonOauthSettion = new AuthenticationClient(instance); _mastodonAppRegistration = await _mastodonOauthSettion.CreateApp(appName, Scope.Read | Scope.Write | Scope.Follow); url = _mastodonOauthSettion.OAuthUrl(); } catch { await new MessageDialog(_resourceLoader.GetString("AuthorizePopup_OAuthAuthorizeError")) .ShowAsync(); } finally { AuthorizePopupConfigNextButton.IsEnabled = true; } AuthorizePopupAuthorizeWebView.Navigate(new Uri(url)); VisualStateManager.GoToState(this, "Authorize", true); VisualStateManager.GoToState(this, "AuthorizeNormal", true); _authorizeStep = AuthorizeStep.MastodonAuthorize; } }
public TwitterClient() { User = new User(); Session = OAuth.AuthorizeAsync(TwitterKeys.ConsumerKey, TwitterKeys.ConsumerSecret).Result; }
private async void ConfigureAuth() { Session = await OAuth.AuthorizeAsync(consumerKey : TwitterApiKey.ConsumerKey, consumerSecret : TwitterApiKey.ConsumerSecret, oauthCallback : Callback); Source.Value = Session.AuthorizeUri; }