コード例 #1
0
 private void GetMFAChallenge(OfxDownloadData ofxData)
 {
     challenge            = new OfxMfaChallengeRequest(ofxData.OnlineAccount, this.myMoney);
     challenge.UserData   = ofxData;
     challenge.Completed += OnChallengeCompleted;
     challenge.BeginMFAChallenge();
 }
コード例 #2
0
        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;
            }
        }