Ceci est mon formulaire ASP.NET. Je veux ajouter la recaptcha invisible avec la validation côté serveur. Puis-je avoir une aide s'il vous plait?mettant en œuvre Invisible Google reCaptcha pour l'application asp.net?
Je peux faire la validation côté client mais il n'utilise pas de clé secrète. Mon autre question est: avons-nous besoin d'une clé secrète pour recaptcha invisible?
Veuillez voir le code côté serveur que j'ai utilisé pour google recaptcha mais cela ne fonctionne pas pour Invisible recaptcha. Je reçois cette erreur: - reCAPTCHA Erreur: manque-entrée-réponse: non valide Recaptcha
<div id="ContactFormDiv" runat="server">
<div class="form-row form-required">
<asp:Label ID="YourNameLabel" runat="server" AssociatedControlID="YourNameTextBox"> Your Name:</asp:Label>
<asp:TextBox ID="YourNameTextBox" runat="server" CssClass="form300" MaxLength="150"></asp:TextBox>
</div>
<div class="form-row form-required">
<div id='recaptcha' class="g-recaptcha"
data-sitekey="site key"
data-callback="onSubmit"
data-size="invisible">
</div>
</div>
<div class="form-row-buttons">
<asp:Button ID="SendMessageButton" ClientIDMode="Static" runat="server" Text="Send Message" CssClass="buttonPositive"
CausesValidation="True" OnClick="SendMessageButton_Click" />
</div>
</div>
code Javascript
<script type="text/javascript" src="https://www.google.com/recaptcha/api.js" async defer></script>
Serverside code
public class MyObject
{
public string success { get; set; }
}
public static string ReCaptcha_Key = "------------------Site Key-----------------";
public static string ReCaptcha_Secret = "--------------Secret Key ---------------";
public bool ValidateReCaptcha()
{
bool Valid = false;
//start building recaptch api call
var sb = new StringBuilder();
//Getting Response String Append to Post Method
string Response = Request["g-recaptcha-response"];
string url = "https://www.google.com/recaptcha/api/siteverify?secret=" + ReCaptcha_Secret + "&response=" + Response;
sb.Append(url);
//make the api call and determine validity
using (var client = new WebClient())
{
var uri = sb.ToString();
var json = client.DownloadString(uri);
var serializer = new DataContractJsonSerializer(typeof(RecaptchaApiResponse));
var ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
var result = serializer.ReadObject(ms) as RecaptchaApiResponse;
//--- Check if we are able to call api or not.
if (result == null)
{
lblmsg.Text = "Captcha was unable to make the api call";
}
else // If Yes
{
//api call contains errors
if (result.ErrorCodes != null)
{
if (result.ErrorCodes.Count > 0)
{
foreach (var error in result.ErrorCodes)
{
lblmsg.Text = "reCAPTCHA Error: " + error;
}
}
}
else //api does not contain errors
{
if (!result.Success) //captcha was unsuccessful for some reason
{
lblmsg.Text = "Captcha did not pass, please try again.";
}
else //---- If successfully verified. Do your rest of logic.
{
lblmsg.Text = "Captcha cleared ";
Valid = true;
}
}
}
}
return Valid;
}
public bool temp = true;
protected void SendMessageButton_Click(object sender, EventArgs e)
{
temp = ValidateReCaptcha();
if (temp == false)
{
lblmsg.Text = "Not Valid Recaptcha";
lblmsg.ForeColor = System.Drawing.Color.Red;
}
else
{
lblmsg.Text = "Successful";
lblmsg.ForeColor = System.Drawing.Color.Green;
}
Page.Validate();
if (this.Page.IsValid == true && temp == true)
{ //Page and invisible recaptcha is valid }
}
Je reçois cette erreur: - reCAPTCHA Erreur: missing-input-response: Non Val id Recaptcha
Invisible recaptcha? Ça n'a pas de sens. Cela ne défie-t-il pas le but de l'utiliser? – VDWWD
@VDWWD Veuillez effectuer une recherche Google Invisible reCaptcha https://developers.google.com/recaptcha/docs/invisible –
ok ... Il existe. Désolé pour ça. La seule différence est que vous n'avez pas à cliquer sur la case à cocher, mais le reste semble le même et s'il ne vous fait toujours pas confiance, il affichera toujours la validation. – VDWWD