Ejemplo n.º 1
0
        public async Task <SiteVerifyResult> VerifyAsync(SiteVerifyPost post)
        {
            SiteVerifyResponse response = await GetSiteVerifyAsync(post);

            SiteVerifyResult result = new SiteVerifyResult();

            if (response == null)
            {
                throw new Exception("No response returned from Google reCAPTCHA.");
            }

            if (response.ErrorCodes != null && response.ErrorCodes.Any())
            {
                List <ResultErrorMessage> errorList = new List <ResultErrorMessage>();
                foreach (var error in response.ErrorCodes)
                {
                    errorList.Add(new ResultErrorMessage()
                    {
                        Id = "", Message = error
                    });
                }
                result.IsVerified           = false;
                result.ResultStatus         = enums.ResultStatus.Error;
                result.ResultStatusMessages = errorList.ToArray();
                return(result);
            }

            result.IsVerified = response.Success;

            return(result);
        }
Ejemplo n.º 2
0
        private async Task <SiteVerifyResponse> GetSiteVerifyAsync(SiteVerifyPost post)
        {
            //string urlParam = UriExt.JsonObjectToUrlParams(post);
            var    sKey                   = post.SecretKey;
            var    gcResponse             = post.RecaptchaResponseToken;
            string url                    = "https://www.google.com/recaptcha/api/siteverify";
            MultipartFormDataContent form = new MultipartFormDataContent();

            form.Add(new StringContent(post.SecretKey), "secret");
            form.Add(new StringContent(post.RecaptchaResponseToken), "response");
            var msg = CreateMessage(HttpMethod.Post, url);

            msg.Content = form;

            SiteVerifyResponse response = null;

            try
            {
                response = await SendMsgAsync <SiteVerifyResponse>(msg);
            }
            catch (Exception)
            {
                throw;
            }

            return(response);
        }
        public async Task <SiteVerifyResult> VerifyReCaptchaAsync(string gReCaptchaResponse)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(gReCaptchaResponse))
                {
                    return(new SiteVerifyResult(ReCaptcha.enums.ResultStatus.BadRequest, new ReCaptcha.Models.ResultErrorMessage("", $"{nameof(gReCaptchaResponse)} must be supplied.")));
                }

                var post = new SiteVerifyPost()
                {
                    RecaptchaResponseToken = gReCaptchaResponse,
                    SecretKey = _reCaptchaClientSettings.SecretKey
                };

                var result = await _reCaptchaClient.VerifyAsync(post);

                if (result == null)
                {
                    return(new SiteVerifyResult(ReCaptcha.enums.ResultStatus.BadRequest, new ReCaptcha.Models.ResultErrorMessage("", "Unable to process request. result was null")));
                }

                if (result.ResultStatus == ReCaptcha.enums.ResultStatus.Error)
                {
                    return(new SiteVerifyResult(ReCaptcha.enums.ResultStatus.Error, result.ResultStatusMessages));
                }

                return(result);
            }
            catch (Exception ex)
            {
                return(new SiteVerifyResult(ReCaptcha.enums.ResultStatus.BadRequest, new ReCaptcha.Models.ResultErrorMessage("", "Unable to process request. " + ex.Message)));
            }
        }