/// <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"));
            }
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
 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;
        }