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); }
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))); } }