Neues Google Recaptcha mit ASP.Net

Ich versuche das neue @ zu bekommGoogle reCaptcha Ich arbeite in meinem ASP.NET-Projekt und habe Probleme, es als neues Projekt zu definieren "Ich bin kein Roboter".

Ich hatte die alte da drin und nachdem ich viel auf der developer.google.com-Website recherchiert habe, sieht alles gleich aus (sie verweisen mich sogar auf einen Download der gleichen DLL - 1.0.5). Also habe ich die neuen Schlüssel bekommen und sie eingelegt und es funktioniert, aber es sieht genauso aus wie das alte reCaptcha.

Hat jemand das neue bekommen, um mit seinem ASP.Net zu arbeiten? Was vermisse ich

BEARBEITEN

So spielte ich in einer Test-App herum und suchte auf einigen anderen Websites. Wenn ich eine Seite wie diese erstelle:

<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>

Und dann mache ich in meinem Code-Behind (Button1_Click) Folgendes:

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

DasrecaptchaResponse ist entweder leer oder ausgefüllt, je nachdem, ob es sich um einen Bot handelt oder nicht. Das Problem ist, dass ich diese Antwort jetzt mit meinem privaten Schlüssel an Google senden muss, damit ich überprüfen kann, ob die Antwort nicht von einem Bot in meinem Code-Behind bereitgestellt wurde, aber ich kann nicht herausfinden, wie. Ich habe es versucht (anstelle vonSuccess = 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

Aber ich konnte nicht herausfinden, wie ich das asynchrone Zeug zum Laufen bringen kann und ich kann nichts auf dem finden, wasReCaptchaModel is, also habe ich eine andere Möglichkeit gefunden, einen Webdienst aufzurufen und eine json-Antwort zu erhalten. Stattdessen habe ich Folgendes versucht:

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

Aber dies gibt mir nur den Inhalt der Webseite unterhttps: //www.google.com/recaptch. Nicht was ich will. DasGoogle page ist nicht sehr nützlich und ich weiß nicht, wohin ich gehen soll. Ich benötige Hilfe beim Aufrufen des Google-Überprüfungsdienstes oder wenn jemand einen anderen Weg gefunden hat, dies über ASP.NET zu tun.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage