无法验证回调 URL 或验证令牌。请验证所提供的信息或稍后重试

问题描述 投票:0回答:6

我一直在遵循 facebook 机器人设置指南,并设置了一个在 EC2 实例上运行的回调 URL。

我在尝试验证回调 url 并验证令牌时收到错误(请参阅本文标题)。

https://360.finance:1337/webhook是我的webhook,验证令牌在我的环境变量和我的facebook设置中是相同的。

我使用 LetsEncrypt 设置了 SSL,据我所知,SSL 并未显示为自签名,因此它看起来工作正常(请注意,我对这一切都是新手)

https://www.ssllabs.com/ssltest/analyze.html?d=360.finance&hideResults=on 检查,一切看起来都正确。

我还将 facebook 页面令牌作为环境变量包含在我的 index.js 文件中

我已经测试了 netcat / telnet 到我的 ec2 IP 上的该端口,并且成功了

amazon-ec2 amazon-route53 lets-encrypt facebook-messenger-bot
6个回答
12
投票

您必须以纯文本形式返回 hub.challenge 令牌的 http 响应。


6
投票

在添加回调 URL 或验证令牌之前,我们需要在 Facebook 应用程序设置页面上更新以下内容。

  1. 隐私政策网址
  2. 类别
  3. 应用程序图标(1024*1024)

Facebook 没有指出我们的确切错误,这很奇怪。


2
投票

请勿使用

ngrok
localtunnel
。 我都尝试过,但没有运气。

如果您确实希望本地开发服务器进行身份验证 - 您可以通过 ssh 端口转发到面向公众的服务器。

ssh -R 4000:localhost:4000 root@your-server-ip

这样你就可以将 nginx 设置为反向代理 443 到 4000 并使用

certbot

处理 ssl

nginx 反向代理的示例配置(运行之前

certbot

server {
    server_name my-own-domain;
    root /usr/share/nginx/html;
    index index.html index.htm;
    listen 80;

location / {
    proxy_pass http://localhost:4000/;
  }
}

所以你“只”需要:

  • 您自己的域名
  • 您自己的服务器
  • nginx
  • 证书机器人
  • SSH 服务器

现在您有了自己的私人

ngrok
替代品


1
投票

检查回调服务器是否正在运行?

回调和令牌来自您的服务器。


1
投票

对于 python 用户,您需要使用点而不是下划线。当我使用下划线版本 Facebook API 无法访问

challenge
时,我没有得到它,但是当我使用邮递员复制相同的 GET 请求时,我可以访问
challenge

# Wrong way
challenge = request.GET['hub_challenge']

# Right way
challenge = request.GET['hub.challenge']
return HttpResponse(challenge)

0
投票

经过 2-3 小时的调试,我的案例返回“\”1412656657\“”而不是“1412656657”。

修复了返回 Content() 内的值的问题

public ContentResult Get()
{
    // validate token
    // get hub.challenge from query string
    var hubChallenge = Request.Query["hub.challenge"];
  
    return Content(hubChallenge, "text/plain");
}
© www.soinside.com 2019 - 2024. All rights reserved.