private void GetMFAChallenge(OfxDownloadData ofxData) { challenge = new OfxMfaChallengeRequest(ofxData.OnlineAccount, this.myMoney); challenge.UserData = ofxData; challenge.Completed += OnChallengeCompleted; challenge.BeginMFAChallenge(); }
void OnChallengeCompleted(object sender, EventArgs e) { OfxMfaChallengeRequest req = (OfxMfaChallengeRequest)sender; if (this.challenge != req) { // perhaps an old stale request just completed, so ignore it. return; } OfxDownloadData data = (OfxDownloadData)req.UserData; if (req.Error != null) { data.Message = "MFA Challenge Failed with error message: " + req.Error.Message; } else if (req.UserChallenges.Count > 0) { MfaChallengeDialog dialog = new MfaChallengeDialog(); dialog.Owner = Application.Current.MainWindow;; dialog.SetupQuestions(req.UserChallenges); if (dialog.ShowDialog() == true) { var answers = req.BuiltInAnswers; // add user answers dialog.GetAnswers(req.UserChallenges, answers); // store answers for use in next OFX request. data.OnlineAccount.MfaChallengeAnswers = answers; } else { // user cancelled. data.Message = "User cancelled MFA Challenge"; } } else { // store any built in answers. data.OnlineAccount.MfaChallengeAnswers = req.BuiltInAnswers; } if (data.OnlineAccount.MfaChallengeAnswers != null && data.OnlineAccount.MfaChallengeAnswers.Count > 0) { data.Message = "MFA Challenge Answers are ready to use"; data.LinkCaption = this.tryAgainCaption = "Try Download Again"; data.OfxError = OfxErrorCode.None; data.Error = null; } }