/// <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")); } }
/// <summary> /// This method should be called once you have received the verifier from /// Evernote. It will populate a EvernoteCredentials object with all the /// information you need to authenticate to Evernote as this user /// </summary> /// <remarks> /// This is an asynchronous method /// </remarks> /// <param name="oauth_verifier">The verifier passed in via the QueryString to your endpoint</param> /// <param name="token">The token used to request the authorization - this should be persisted from the call to GetRequestToken</param> /// <returns></returns> public async Task <EvernoteCredentials> ParseAccessToken(string oauth_verifier, RequestToken token) { // If there is no oauth_verifier parameter, then we failed to authorize :( if (oauth_verifier == null) { return(null); } if (token == null) { throw new ArgumentNullException("token", "You need to pass in the original token that was generated by BuildAuthorizeUrl"); } var result = await base.GetAccessToken(OAuthUrl, token, oauth_verifier, null, null); // There is no extra secret for evernote tokens EvernoteCredentials credentials = new EvernoteCredentials(); credentials.AuthToken = result.Token.Key; // Parse the extra data credentials.Shard = ParseExtraData(result, "edam_shard"); credentials.UserId = ParseExtraData(result, "edam_userId"); var expires = ParseExtraData(result, "edam_expires"); var expiresDateTime = new DateTime(1970, 1, 1).AddTicks(long.Parse(expires) * 10000); credentials.Expires = DateTime.SpecifyKind(expiresDateTime, DateTimeKind.Utc); credentials.NotebookUrl = ParseExtraData(result, "edam_noteStoreUrl"); credentials.WebApiUrlPrefix = ParseExtraData(result, "edam_webApiUrlPrefix"); return(credentials); }
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; }
/// <summary> /// This method should be called once you have received the verifier from /// Evernote. It will populate a EvernoteCredentials object with all the /// information you need to authenticate to Evernote as this user /// </summary> /// <remarks> /// This is an asynchronous method /// </remarks> /// <param name="oauth_verifier">The verifier passed in via the QueryString to your endpoint</param> /// <param name="token">The token used to request the authorization - this should be persisted from the call to GetRequestToken</param> /// <returns></returns> public async Task<EvernoteCredentials> ParseAccessToken(string oauth_verifier, RequestToken token) { // If there is no oauth_verifier parameter, then we failed to authorize :( if (oauth_verifier == null) return null; if (token == null) throw new ArgumentNullException("token", "You need to pass in the original token that was generated by BuildAuthorizeUrl"); var result = await base.GetAccessToken(OAuthUrl, token, oauth_verifier, null, null); // There is no extra secret for evernote tokens EvernoteCredentials credentials = new EvernoteCredentials(); credentials.AuthToken = result.Token.Key; // Parse the extra data credentials.Shard = ParseExtraData(result, "edam_shard"); credentials.UserId = ParseExtraData(result, "edam_userId"); var expires = ParseExtraData(result, "edam_expires"); var expiresDateTime = new DateTime(1970, 1, 1).AddTicks(long.Parse(expires) * 10000); credentials.Expires = DateTime.SpecifyKind(expiresDateTime, DateTimeKind.Utc); credentials.NotebookUrl = ParseExtraData(result, "edam_noteStoreUrl"); credentials.WebApiUrlPrefix = ParseExtraData(result, "edam_webApiUrlPrefix"); return credentials; }