无法使用 python chalice 验证 facebook 回调 url 或验证令牌

Can't verify facebook callback url or verify token using python chalice

提问人:Raphael Quiñones 提问时间:9/22/2023 更新时间:9/26/2023 访问量:25

问:

@app.route('/webhook', methods=['GET'])
def webhook_verify():
    print('testing')
    # Get all query parameters from the GET request
    query_params = app.current_request.query_params

    # Log all parameter names and values
    logger.info('Query parameters received:')
    for param_name, param_value in query_params.items():
        print(f'{param_name}: {param_value}')

    hub_verify_token = query_params.get('hub.verify_token')
    hub_challenge = query_params.get('hub.challenge')

    if hub_verify_token == VERIFY_TOKEN:
        # Log a successful verification
        print('Webhook verification successful')
        return str(query_params.get("hub.challenge")), 200  # 200 OK
    
    # Log an unsuccessful verification
    print('Webhook verification failed: Wrong verify token')
    return {'error': 'Wrong verify token'}, 403  # 403 Forbidden

下面是处理 Webhook 的代码

然后我在 facebook 开发者页面中验证回调 url。然后它说

The callback URL or verify token couldn't be validated. Please verify the provided information or try again later.

但是,在查看 cloudwatch 日志时,它显示以下内容:Logs showing that verification token is correct

它显示验证令牌正确,并返回 200 响应。所以,我很困惑为什么它显示 facebook 开发者页面上有错误

我尝试过: 查看其他python facebook messenger存储库的其他返回响应格式并遵循该格式,但没有运气。

Facebook 回调 facebook-messenger-bot chalice

评论

0赞 CBroe 9/25/2023
您应该能够通过在自己的浏览器中发出这样的 GET 请求来验证是否获得了正确的预期响应。如果不是这种情况 - 修复你的脚本;如果是 - 弄清楚为什么当 Facebook 服务器请求时它的行为明显不同。

答:

0赞 Raphael Quiñones 9/26/2023 #1

        return str(query_params.get("hub.challenge")), 200  # 200 OK

        return str(query_params.get("hub.challenge"))

事实证明,对于200个请求,使用圣杯进行facebook webhooks是不需要说明的。更改后现在可以工作