public void WhenIGetTokensSyncIReceiveDeserializedTokens() { var uriOauth = OAuthRequestHandler.OAuthRequestUri; var factory = new TestWebRequestFactory(); factory.RegisterResultForUri(uriOauth.AbsoluteUri, "{\"access_token\": \"<<token>>\"}"); var service = new OAuthService(_configuration, factory); OAuthTokens received = service.GetTokens("code"); Assert.IsNotNull(received); Assert.AreEqual("<<token>>", received.AccessToken); }
public ActionResult OAuthCallback() { var requestUri = HttpContextFactory.Current.Request.Url; var queries = HttpUtility.ParseQueryString(requestUri.Query); var code = queries["code"]; var service = new OAuthService(APIConfiguration); var oauthToken = service.GetTokens(code); KeyService = new SimpleOAuthKeyService() {OAuthResponse = oauthToken}; if (OAuthInformation.Token == null) OAuthInformation.Token = new OAuthToken(); OAuthInformation.Token.AccessToken = KeyService.OAuthResponse.AccessToken; OAuthInformation.Token.RefreshToken = KeyService.OAuthResponse.RefreshToken; OAuthInformation.Token.ExpiresIn = KeyService.OAuthResponse.ExpiresIn; //OAuthInformation.RequestAccessToken(); return RedirectToAction("Index", "CommandCentre"); }
/// <summary> /// Event that is called when the form loads /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// <remarks></remarks> private void CompanyFilesLoad(object sender, EventArgs e) { try { ShowSpinner(); //If developer key enable (see above) and set useCVloud to true the following section manages OAuth token and accessing cloud service if (UseCloud) { _configurationCloud = new ApiConfiguration(DeveloperKey, DeveloperSecret, "http://desktop"); _oAuthKeyService = new OAuthKeyService(); //Get tokens if not stored if (_oAuthKeyService.OAuthResponse == null) { var oauthService = new OAuthService(_configurationCloud); _oAuthKeyService.OAuthResponse = oauthService.GetTokens(OAuthLogin.GetAuthorizationCode(_configurationCloud)); } // Load all files from cloud and local simultaneously var cfsCloud = new CompanyFileService(_configurationCloud, null, _oAuthKeyService); cfsCloud.GetRange(OnComplete, OnError); } _configurationLocal = new ApiConfiguration(LocalApiUrl); var cfsLocal = new CompanyFileService(_configurationLocal); cfsLocal.GetRange(OnComplete, OnError); //' The following two lines can be called to run synchronously rather than async //_companyFiles = cfs.GetRange() //dgvCompanyFiles.DataSource = _companyFiles } catch (Exception ex) { MessageBox.Show(ex.Message); } }
public void GetTokensCorrectlyHandlesWebExceptionErrors() { // arrange var apiUri = ApiRequestHandler.ApiRequestUri; var factory = new TestWebRequestFactory(); factory.RegisterExceptionForUri<WebException>(OAuthRequestHandler.OAuthRequestUri.AbsoluteUri); var service = new OAuthService(_configuration, factory); // act var ex = Assert.Throws<ApiCommunicationException>(() => service.GetTokens("<<code>>")); // assert Assert.AreEqual(OAuthRequestHandler.OAuthRequestUri, ex.URI); }
void OAuthLogin_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) { Debug.WriteLine(e.Uri); if (!string.Equals(e.Uri.ToString(), _authorizeUri.ToString(), StringComparison.InvariantCultureIgnoreCase)) { OAuthLogin.InvokeScript("eval", "var msViewportStyle = document.createElement(\"style\");" + "msViewportStyle.appendChild(document.createTextNode(\"@-ms-viewport{width:auto!important}\"));" + "document.getElementsByTagName(\"head\")[0].appendChild(msViewportStyle);"); if (string.Equals(e.Uri.ToString(), _loginUri.ToString(), StringComparison.InvariantCultureIgnoreCase)) { OAuthLogin.Navigate(_authorizeUri); } return; } var content = OAuthLogin.SaveToString(); var regex = new Regex(@"\<title\>(.+?)=(.+?)\</title\>"); var match = regex.Match(content); if (!match.Success || match.Groups.Count != 3) return; switch (match.Groups[1].Value.ToLowerInvariant()) { case "code": // we have a code var code = match.Groups[2].Value; var config = new ApiConfiguration(); var service = new OAuthService(config, new WebRequestFactory(config)); service.GetTokens(code, (statusCode, tokens) => { OAuthResponse = tokens; Dispatcher.BeginInvoke(() => _viewModel.FetchCompanyFies(ShowError)); }, (uri, exception) => ShowError(exception)); break; case "error": // user probably said "no thanks" OAuthLogin.Navigate(_logoffUri); break; } }