【问题标题】:Use ngrok url as callback url for facebook webhook, but is recognized "not whitelisted"使用 ngrok url 作为 facebook webhook 的回调 url,但被识别为“未列入白名单”
【发布时间】:2018-06-07 21:35:39
【问题描述】:

我的 IDE 是 Pycharm。 我想在本地测试我的应用程序,所以我在本地运行我的服务并使用 ngrok 将我的应用程序公开到 Internet。

ngrok显示的url是https://436cb7e9.ngrok.io

但是当我想验证 facebook webhook 回调 url 使用上面的这个 url 时,它显示

ERROR 2017-12-27 08:16:37,407 wsgi_server.py:329] 请求主机 436cb7e9.ngrok.io 未列入白名单。已设置启用的主机(['localhost'])

我之前运行过该应用程序,但我不知道为什么这次它显示错误。 有人能给我建议吗?

【问题讨论】:

  • 您需要将您的436cb7e9.ngrok.io 放入允许的主机列表中。不知道你用的是什么框架。但请仔细阅读错误描述。
  • @vishes_shell 感谢您的回复。但我不知道如何将 url 设置为允许的主机。我使用的框架是 Flask。实际上,花了一整天后,我发现这是我将gcloud从182.0.0升级到183.0.0的问题,然后我的主机被阻塞了。所以我最终降级到 182.0.0。

标签: python pycharm webhooks facebook-chatbot facebook-webhooks


【解决方案1】:

经过一番挖掘并感谢 Brady 对 gcloud 版本的评论,我发现您需要解决的只是在运行应用程序时添加一个标志。

所以,假设您在本地运行您的应用程序:

python $APPENGINE/dev_appserver.py

只需将其更改为:

python $APPENGINE/dev_appserver.py --enable_host_checking=false

而且您不应该再出现主机白名单错误。

有关更多信息,请在此处查看发行说明:https://cloud.google.com/appengine/docs/standard/python/release-notes#december_5_2017

这对我来说似乎在 gcloud 183.0.0 和 187.0.0(撰写此评论时的最新版本)上运行良好。

【讨论】:

  • 我认为更好的解决方法是保留 enable_host_checking 的默认值(这是真的)并以这种方式使用 ngrok ./ngrok http 8080 -subdomain=yourallowedsubdomain -host-header=localhost:8080 。您只需在项目中注册 yourallowedsubdomain,任务队列就不会再抱怨主机头了
【解决方案2】:

这是通过您的 ngrok 仪表板的Auth 选项卡完成的。来自IP Whitelisting Tunnel Access

您可以将对您帐户中隧道端点的访问列入白名单。这 白名单由 ngrok.com 服务器强制执行。它在全球范围内应用 到您的所有隧道端点。任何传入连接 检查您的隧道端点以确保源 IP 连接地址与您的至少一个条目匹配 白名单。如果连接与白名单不匹配,则为 立即终止并且从未转发给 ngrok 客户端。

作为一种特殊情况,如果您的白名单为空,则所有连接都是 允许

管理白名单

您可以在auth tab of your ngrok上管理IP白名单 仪表板。在“IP 白名单”部分下输入新的 IP 地址,然后 然后点击添加白名单条目。更改 IP 白名单可以 最多需要 30 秒才能生效。

IP 范围

有时,您可能希望将整个 IP 范围列入白名单。反而 只需输入一个 IP 地址,您可以指定一个块 使用CIDR notation 的IP 地址。例如,允许所有 IP 地址从 10.1.2.0 到 10.1.2.255,您可以将 10.1.2.0/24 添加到 你的白名单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2012-05-18
    相关资源
    最近更新 更多