이 페이지에서는 애플리케이션 백엔드의 reCAPTCHA 챌린지에 대한 사용자 응답을 확인하는 방법을 설명합니다.
웹 사용자의 경우 다음 세 가지 방법 중 하나로 사용자의 응답 토큰을 가져올 수 있습니다.
- 사용자가 사이트에서 양식을 제출할 때의
g-recaptcha-response
POST 매개변수 - 사용자가 reCAPTCHA 테스트를 완료한 후
grecaptcha.getResponse(opt_widget_id)
data-callback
이g-recaptcha
태그 속성 또는grecaptcha.render
메서드의 콜백 매개변수에 지정된 경우 콜백 함수에 대한 문자열 인수
Android 라이브러리 사용자의 경우 상태가 성공으로 반환되면 SafetyNetApi.RecaptchaTokenResult.getTokenResult() 메서드를 호출하여 응답 토큰을 가져올 수 있습니다.
토큰 제한사항
각 reCAPTCHA 사용자 응답 토큰은 2분 동안 유효하며 재전송 공격을 방지하기 위해 한 번만 확인할 수 있습니다. 새 토큰이 필요한 경우 reCAPTCHA 인증을 다시 실행할 수 있습니다.
응답 토큰을 가져온 후에는 토큰이 유효한지 확인하기 위해 다음 API를 사용하여 reCAPTCHA로 2분 이내에 확인해야 합니다.
API 요청
URL: https://www.google.com/recaptcha/api/siteverify 방법: POST
POST 매개변수 | 설명 |
---|---|
secret |
필수 항목입니다. 사이트와 reCAPTCHA 간에 공유된 키입니다. |
response |
필수 항목입니다. 사이트의 reCAPTCHA 클라이언트 측 통합에서 제공하는 사용자 응답 토큰입니다. |
remoteip |
선택사항입니다. 사용자의 IP 주소입니다. |
API 응답
응답은 JSON 객체입니다.
{
"success": true|false,
"challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
"hostname": string, // the hostname of the site where the reCAPTCHA was solved
"error-codes": [...] // optional
}
reCAPTCHA Android의 경우:
{
"success": true|false,
"challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
"apk_package_name": string, // the package name of the app where the reCAPTCHA was solved
"error-codes": [...] // optional
}
오류 코드 참조
오류 코드 | 설명 |
---|---|
missing-input-secret | 보안 비밀 매개변수가 누락되었습니다. |
invalid-input-secret | 보안 비밀 매개변수가 올바르지 않거나 형식이 잘못되었습니다. |
missing-input-response | 응답 매개변수가 누락되었습니다. |
invalid-input-response | 응답 매개변수가 올바르지 않거나 형식이 잘못되었습니다. |
bad-request | 요청이 잘못되었거나 형식이 잘못되었습니다. |
timeout-or-duplicate | 응답이 더 이상 유효하지 않습니다. 너무 오래되었거나 이전에 사용되었습니다. |