protected void Page_Load(object sender, EventArgs e) { //Setup the auth url string authUrl = "https://runkeeper.com/apps/authorize?client_id=" + ClientId + "&redirect_uri=" + HttpUtility.UrlEncode(RequestUri) + "&response_type=code"; AAuthAnchor.HRef = authUrl; //Initialize the healthgraph api - get a token or use an existing one saved to session TokenManager = new AccessTokenManager(ClientId, ClientSecret, RequestUri); if (string.IsNullOrEmpty(Code) == false) { //If we set the code in the url string, get a new access token and save it to the session TokenManager.InitAccessToken(Code); Token = TokenManager.Token; } else if (Token != null) { //Otherwise, if the access code saved in session is present we'll attempt to use that TokenManager.Token = Token; } if (Token != null) { DisplayHealthGraphSamples(); } }
protected void AttemptAuth(object sender, EventArgs e) { _clientIdEntry.FetchValue(); ClientId = _clientIdEntry.Value; _clientSecretEntry.FetchValue(); ClientSecret = _clientSecretEntry.Value; _requestUriEntry.FetchValue(); RequestUri = _requestUriEntry.Value; if ((string.IsNullOrEmpty(ClientId)) || (string.IsNullOrEmpty(ClientSecret)) || (string.IsNullOrEmpty(RequestUri))) { UIAlertView firstPageValidationAlert = new UIAlertView("Whoops!", "Please provide a Client Id, Client Secrent and Request Uri.", null, "Okay"); firstPageValidationAlert.Show(); } else { //Elements for Second Page - authorization var secondPage = new UIViewController(); secondPage.Title = "Authorize"; var authorizeWebView = new UIWebView(secondPage.View.Frame); secondPage.View.AddSubview(authorizeWebView); viewController.VisibleViewController.NavigationController.PushViewController(secondPage, true); authorizeWebView.LoadFinished += delegate(object s, EventArgs ev) { string currentUrl = authorizeWebView.Request.Url.AbsoluteString; const string CodeIdentifier = "code="; if (currentUrl.Contains(CodeIdentifier)) { //We've received an authorization code - initialize the token manager to get a create a token Code = currentUrl.Substring(currentUrl.IndexOf(CodeIdentifier) + CodeIdentifier.Length); TokenManager = new AccessTokenManager(ClientId, ClientSecret, RequestUri); InvokeOnMainThread(() => { UIApplication.SharedApplication.NetworkActivityIndicatorVisible = true; }); TokenManager.InitAccessToken(Code); var userRequest = new UsersEndpoint(TokenManager); User = userRequest.GetUser(); var profileRequest = new ProfileEndpoint(TokenManager, User); Profile = profileRequest.GetProfile(); InvokeOnMainThread(() => { UIApplication.SharedApplication.NetworkActivityIndicatorVisible = false; }); ShowUserAndProfile(); } }; authorizeWebView.LoadRequest(new NSUrlRequest(new NSUrl(HealthGraphAuthorizeEndpoint + "?client_id=" + ClientId + "&redirect_uri=" + HttpUtility.UrlEncode(RequestUri) + "&response_type=code"))); } }