Example #1
0
			public override void OnPageStarted (WebView view, string url, Android.Graphics.Bitmap favicon)
			{
				if (!url.StartsWith (RedirectUri) || this.tcs.Task.IsCompleted)
					return;

				this.view.Visibility = ViewStates.Gone;

				var values = ParseQueryString (new Uri (url).Query);

				if (values["oauth_token"] != this.token)
				{
					this.tcs.SetException (new Exception ("Invalid token"));
					return;
				}

				this.verifier = values ["oauth_verifier"];

				HttpWebRequest request = new HttpWebRequest (new Uri ("https://api.twitter.com/oauth/access_token"));
				request.Method = "POST";
				request.SignRequest (new Tokens
				{
					ConsumerKey = ConsumerKey,
					ConsumerSecret = ConsumerSecret,
					AccessToken = this.token,
					AccessTokenSecret = this.secret
				}).InHeader();

				using (StreamWriter writer = new StreamWriter (request.GetRequestStream()))
				{
					writer.Write ("oauth_verifier=" + this.verifier);
					writer.Flush();
				}

				try
				{
					HttpWebResponse httpresponse = (HttpWebResponse)request.GetResponse();
					using (Stream rstream = httpresponse.GetResponseStream())
					using (StreamReader reader = new StreamReader (rstream))
					{
						string response = Uri.UnescapeDataString (reader.ReadToEnd());
						var parts = ParseQueryString (response);

						this.tcs.SetResult (new Tuple<string, string> (parts ["oauth_token"], parts ["oauth_token_secret"]));
					}
				}
				catch (WebException ex)
				{
					this.tcs.SetException (ex);
				}

				base.OnPageStarted (view, url, favicon);
			}
Example #2
0
			public void Auth()
			{
				this.view.Visibility = ViewStates.Visible;

				HttpWebRequest request = new HttpWebRequest (new Uri ("https://api.twitter.com/oauth/request_token"));
				request.SignRequest (new Tokens { ConsumerKey = ConsumerKey, ConsumerSecret = ConsumerSecret })
					.WithCallback (RedirectUri)
					.InHeader();

				try
				{
					HttpWebResponse response = (HttpWebResponse)request.GetResponse();
					using (Stream rstream = response.GetResponseStream())
					using (StreamReader reader = new StreamReader (rstream))
					{
						string rcontents = reader.ReadToEnd();
						var values = ParseQueryString (rcontents);
						if (values["oauth_callback_confirmed"] != "true")
						{
							this.tcs.SetException (new Exception ("Callback not confirmed"));
							return;
						}

						this.token = values ["oauth_token"];
						this.secret = values ["oauth_token_secret"];
					}
				}
				catch (Exception ex)
				{
					this.tcs.SetException (ex);
					return;
				}

				this.view.LoadUrl ("https://api.twitter.com/oauth/authenticate?oauth_token=" + this.token);
			}