Как я могу опубликовать ответ Google ReCAPTCHA с asp.net? - PullRequest
0 голосов
/ 08 июня 2018

Я хочу проверить ответ reCaptcha от Google в asp.net.Если клиент не выбрал «я не робот», форма не будет отправлена.Я написал коды ниже в C #, но это не работает, как ожидалось.Кто-нибудь может мне помочь?

public class ReCaptchaClass{
public static string Validate(string EncodedResponse)
{
    var client = new System.Net.WebClient();


    string PrivateKey = "--secret-key--";

    var GoogleReply = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", PrivateKey, EncodedResponse));

    var captchaResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ReCaptchaClass>(GoogleReply);

    return captchaResponse.Success.ToLower();
}

[JsonProperty("success")]
public string Success
{
    get { return m_Success; }
    set { m_Success = value; }
}

private string m_Success;
[JsonProperty("error-codes")]
public List<string> ErrorCodes
{
    get { return m_ErrorCodes; }
    set { m_ErrorCodes = value; }
}
private List<string> m_ErrorCodes;
}

И я использовал приведенную ниже строку для регистрации:

string EncodedResponse = Request.Form["g-Recaptcha-Response"];
bool IsCaptchaValid = (ReCaptchaClass.Validate(EncodedResponse) == "true" ? true : false);

if (IsCaptchaValid)
{
    //Valid Request
}

1 Ответ

0 голосов
/ 09 июня 2018

Вот код, который я использую в своем контроллере WEB API

    public async Task<IActionResult> SendMessage(string encodedResponse)
    {
        var url = $"https://www.google.com/recaptcha/api/siteverify?secret=--secret-key--&response={encodedResponse}";

        using (var client = new HttpClient())
        {
            using (var response = await client.PostAsync(url, null))
            {
                var json = JObject.Parse(await response.Content.ReadAsStringAsync());

                if (!(bool)json["success"])
                {
                    return Unauthorized();
                }
            }
        }

        // CODE HERE WHEN THE REQUEST IS OK


        return Ok();
    }
...