Новый Google Recaptcha с ASP.Net
Я пытаюсь получить новыйGoogle reCaptcha Я работаю в своем проекте ASP.NET, и у меня возникают проблемы с получением нового "Я не робот".
У меня был старый, и после долгих исследований на сайте developers.google.com все выглядит одинаково (они даже указывают мне на скачивание той же самой dll - 1.0.5). Итак, я получил новые ключи и вставил их, и это работает, но выглядит так же, как старая reCaptcha.
Кто-нибудь получил новый для работы с их ASP.Net? Что мне не хватает?
РЕДАКТИРОВАТЬ:
Поэтому, играя в тестовом приложении и просматривая другие веб-сайты, я обнаружил, что если я создаю страницу, подобную этой:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>reCAPTCHA demo: Simple page</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form id="form1" runat="server" action="?" method="POST">
<div>
<div class="g-recaptcha" data-sitekey="My Public Key"></div>
<br/>
<asp:Button ID="Button1" runat="server" Text="Submit" />
</div>
</form>
</body>
</html>
И затем в моем коде (Button1_Click) я делаю это:
Dim Success As Boolean
Dim recaptchaResponse As String = request.Form("g-recaptcha-response")
If Not String.IsNullOrEmpty(recaptchaResponse) Then
Success = True
Else
Success = False
End If
recaptchaResponse
будет либо пустым, либо заполненным в зависимости от того, бот они или нет. Проблема в том, что теперь мне нужно взять этот ответ и отправить его в Google со своим закрытым ключом, чтобы я мог проверить, что ответ не был предоставлен ботом в моем коде, но я не могу понять, как. Я попробовал это (вместоSuccess = True
):
Dim client As New System.Net.Http.HttpClient()
client.BaseAddress = New Uri("https://www.google.com/recaptcha/")
client.DefaultRequestHeaders.Accept.Clear()
client.DefaultRequestHeaders.Accept.Add(New Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"))
Dim response As Net.Http.HttpResponseMessage = Await client.GetAsync("api/siteverify?secret=My Private key&response=" + recaptchaResponse)
If (response.IsSuccessStatusCode) Then
Dim CaptchResponse As ReCaptchaModel = Await response.Content.ReadAsAsync(Of ReCaptchaModel)()
Success = CaptchResponse.success
Else
Success = False
End If
Но я не мог понять, как заставить работать асинхронный материал, и я не могу найти что-нибудь о том, чтоReCaptchaModel
есть, поэтому я нашел другой способ вызвать веб-сервис и получить ответ json и попробовал это вместо этого:
Dim request As Net.WebRequest = Net.WebRequest.Create("https://www.google.com/recaptcha/")
Dim Data As String = "api/siteverify?secret=My Private Key&response=" + recaptchaResponse
request.Method = "POST"
request.ContentType = "application/json; charset=utf-8"
Dim postData As String = "{""data"":""" + Data + """}"
'get a reference to the request-stream, and write the postData to it
Using s As IO.Stream = request.GetRequestStream()
Using sw As New IO.StreamWriter(s)
sw.Write(postData)
End Using
End Using
'get response-stream, and use a streamReader to read the content
Using s As IO.Stream = request.GetResponse().GetResponseStream()
Using sr As New IO.StreamReader(s)
'decode jsonData with javascript serializer
Dim jsonData = sr.ReadToEnd()
Stop
End Using
End Using
Но это просто дает мне содержание веб-страницы наhttps://www.google.com/recaptcha, Не то, что я хочу.Страница Google не очень полезно, и я застрял на том, куда идти. Мне нужна помощь, позвонив в службу проверки Google или если кто-то нашел другой способ сделать это из ASP.NET.