Отправка запроса к reCAPTCHA Enterprise API не удалась

Я пытаюсь создать оценку 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.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
123
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо этого попробуйте использовать 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 и токен (но не уверен, что писать в переменной действия)

Nitcha 11.12.2022 16:59

Это означает, что используемый вами токен недействителен или срок его действия истек. Я не могу помочь вам гораздо больше, предоставляя информацию, которую вы предоставили. Если вы нашли мой ответ полезным, отметьте его как «Принято», спасибо! :)

Pexers 11.12.2022 17:21

Другие вопросы по теме