Я пытаюсь создать оценку ReCaptcha, используя их REST API на моем внутреннем сервере.
Из чтения документации я понял, что тело запроса содержит экземпляр Assesment, но при попытке отправить запрос я получаю следующую ошибку:
TypeError: объект типа Assessment не сериализуем JSON
Мой код:
import requests
from google.cloud import recaptchaenterprise_v1
from google.cloud.recaptchaenterprise_v1 import Assessment
def create_assessment(project_id: str, recaptcha_site_key: str, token: str, recaptcha_action: str, apiKey:str):
# Create event object
event = recaptchaenterprise_v1.Event()
event.site_key = recaptcha_site_key
event.token = token
# Create assesment object
assessment = recaptchaenterprise_v1.Assessment()
assessment.event = event
# Set project name
project_name = "projects/"+project_id
response = requests.post(url = "https://recaptchaenterprise.googleapis.com/v1/"+project_name+"/assessments?key = "+apiKey, json=assessment)
return response
Я попытался преобразовать assesment в JSON с помощью dumps(), но безуспешно.
Я также пытался написать это как «тощий JSON», например:
assessment = {
'event': {
'token': token,
'siteKey': recaptcha_site_key,
'expectedAction': 'LOGIN'
}
}
Несмотря на то, что я получаю код состояния 200, это указывает на то, что мой запрос НЕПРАВИЛЬНО, вероятно, потому, что я не включаю некоторые recaptchaenterprise_v1 объекты, которые должны быть в assesment.






Вместо этого попробуйте использовать CreateAssessmentRequest для создания запроса, например:
client = recaptchaenterprise_v1.RecaptchaEnterpriseServiceClient()
project_name = "projects/"+project_id
# Build the assessment request.
request = recaptchaenterprise_v1.CreateAssessmentRequest()
request.assessment = assessment
request.parent = project_name
response = client.create_assessment(request)
Вы можете найти более полный пример кода в документации GCP.
Это означает, что используемый вами токен недействителен или срок его действия истек. Я не могу помочь вам гораздо больше, предоставляя информацию, которую вы предоставили. Если вы нашли мой ответ полезным, отметьте его как «Принято», спасибо! :)
Спасибо, я следил за документацией GCP и использовал учетную запись службы для аутентификации... Но теперь у меня другая проблема - я всегда получаю 0 баллов и ошибку "Вызов CreateAssessment не выполнен, поскольку токен недействителен по следующим причинам: InvalidReason.MALFORMED" Я использовал запись project_id, site_key и токен (но не уверен, что писать в переменной действия)