/// <summary> /// This action is the callback that Evernote will redirect to after /// the call to Authorize above /// </summary> /// <param name="oauth_verifier"></param> /// <returns></returns> public ActionResult ObtainTokenCredentials(string oauth_verifier) { // Use the verifier to get all the user details we need and // store them in EvernoteCredentials if (oauth_verifier != null) { var result = OAuthAuthorizer.GetAccessToken(ConfigurationManager.AppSettings["Evernote.Url"] + "/oauth", SessionHelper.RequestToken as RequestToken, oauth_verifier, null, null).Result; EvernoteCredentials credentials = new EvernoteCredentials(); credentials.AuthToken = result.Token.Key; // Parse the extra data credentials.Shard = Uri.UnescapeDataString(result.ExtraData["edam_shard"].FirstOrDefault()); credentials.UserId = Uri.UnescapeDataString(result.ExtraData["edam_userId"].FirstOrDefault()); var expires = Uri.UnescapeDataString(result.ExtraData["edam_expires"].FirstOrDefault()); var expiresDateTime = new DateTime(1970, 1, 1).AddTicks(long.Parse(expires) * 10000); credentials.Expires = DateTime.SpecifyKind(expiresDateTime, DateTimeKind.Utc); credentials.NotebookUrl = Uri.UnescapeDataString(result.ExtraData["edam_noteStoreUrl"].FirstOrDefault()); credentials.WebApiUrlPrefix = Uri.UnescapeDataString(result.ExtraData["edam_webApiUrlPrefix"].FirstOrDefault()); SessionHelper.EvernoteCredentials = credentials; return Redirect(Url.Action("Authorized")); } else { return Redirect(Url.Action("Unauthorized")); } }
public EFDbEvernoteCredentials(EvernoteCredentials evernoteCredentials) { this.AuthToken = evernoteCredentials.AuthToken; this.Expires = evernoteCredentials.Expires; this.NotebookUrl = evernoteCredentials.NotebookUrl; this.Shard = evernoteCredentials.Shard; this.UserId = evernoteCredentials.UserId; this.WebApiUrlPrefix = evernoteCredentials.WebApiUrlPrefix; }
// // GET: /Manage/EvernoteCallback public async Task <ActionResult> EvernoteCallback([FromQuery] string oauth_verifier) { EvernoteCallbackViewModel evernoteCallbackViewModel = new EvernoteCallbackViewModel(); if (String.IsNullOrEmpty(oauth_verifier)) { throw new ArgumentNullException(nameof(oauth_verifier), "Problem authenticating Evernote: did not receive OAuth verifier"); } EvernoteAuthorizer evernoteAuthorizer = new EvernoteAuthorizer(_evernoteOptions.URL, _evernoteOptions.SharedKey, _evernoteOptions.SharedSecret); RequestToken requestToken = (RequestToken)JsonConvert.DeserializeObject(HttpContext.Session.GetString("RequestToken"), typeof(RequestToken)); EvernoteCredentials evernoteCredentials = evernoteAuthorizer.ParseAccessToken(oauth_verifier, requestToken); EFDbEvernoteCredentials efdbEvernoteCredentials = new EFDbEvernoteCredentials(evernoteCredentials); var user = await GetCurrentUserAsync(); if (evernoteCredentials == null) { evernoteCallbackViewModel.ErrorMessage = "You did not authorise application"; user.HasAuthorisedEvernote = false; } else { evernoteCallbackViewModel.SuccessMessage = "Evernote successfully authorised, you can now search for notes and start reading"; _dataAccess.UpdateEvernoteCredentials(efdbEvernoteCredentials); user.HasAuthorisedEvernote = true; user.EvernoteCredentials = efdbEvernoteCredentials; user.EvernoteCredentialsId = efdbEvernoteCredentials.Id; } await _userManager.UpdateAsync(user); return(View(evernoteCallbackViewModel)); }