이 페이지에서는 애플리케이션 백엔드에서 reCAPTCHA 챌린지에 대한 사용자의 응답을 확인하는 방법을 설명합니다.
웹 사용자의 경우 다음 세 가지 방법 중 하나로 사용자의 응답 토큰을 가져올 수 있습니다.
- 사용자가 사이트에서 양식을 제출할 때
g-recaptcha-response
POST 매개변수 - 사용자가 완료한 후
grecaptcha.getResponse(opt_widget_id)
reCAPTCHA 테스트 - 콜백 함수의 문자열 인수로
data-callback
가g-recaptcha
태그 속성에 지정되거나grecaptcha.render
메서드의 콜백 매개변수
Android 라이브러리 사용자의 경우 SafetyNetApi.RecaptchaTokenResult.getTokenResult() 메서드를 사용하여 상태가 성공이 반환되면 응답 토큰을 가져올 수 있습니다.
토큰 제한사항
각 reCAPTCHA 사용자 응답 토큰은 2분 동안 유효하며 다음을 위해 한 번만 확인할 수 있습니다. 재전송 공격을 방지할 수 있습니다 새 토큰이 필요한 경우 reCAPTCHA 인증을 다시 실행하면 됩니다.
응답 토큰을 가져온 후에는 다음 API를 사용하여 2분 이내에 reCAPTCHA로 토큰을 확인하여 토큰이 유효한지 확인해야 합니다.
API 요청
URL: https://www.google.com/recaptcha/api/siteverify
METHOD: 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 |
응답이 더 이상 유효하지 않습니다. 너무 오래되었거나 이전에 사용된 것입니다. |