Skip to content

Instantly share code, notes, and snippets.

@cp-sumi-k
Last active October 5, 2022 06:17
Show Gist options
  • Save cp-sumi-k/ac55d20d4acac71cbe061ddd730c6039 to your computer and use it in GitHub Desktop.
Save cp-sumi-k/ac55d20d4acac71cbe061ddd730c6039 to your computer and use it in GitHub Desktop.
func VerifyRecaptcha(token string) (bool, error) {
ctx := context.Background()
/** convert base64 formetted JSON to bytearray */
credBytes, err := b64.StdEncoding.DecodeString(os.Getenv("JSON_BASE64"))
if err != nil {
return false, err
}
/** create reCaptcha client with JSON bytearray */
client, err := recaptcha.NewClient(ctx, option.WithCredentialsJSON(credBytes))
if err != nil {
return false, err
}
/** close client when it's done */
defer client.Close()
/** create the assessment request */
request := &recaptchapb.CreateAssessmentRequest{
Assessment: &recaptchapb.Assessment{
Event: &recaptchapb.Event{
Token: token,
SiteKey: os.Getenv("RECAPTCHA_SITE_KEY"),
},
},
Parent: fmt.Sprintf("projects/%s", os.Getenv("RECAPTCHA_PROJECT_ID")),
}
/** create assessment */
response, err := client.CreateAssessment(ctx, request)
if err != nil {
return false, err
}
/** Interpret and verify assessment response */
if response.TokenProperties.Action == "verify" && response.TokenProperties.Valid && response.RiskAnalysis.Score >= 0.9 {
return true, nil
}
return false, nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment