我正在用Facebook Messenger开发者平台创建一个聊天机器人。
我的问题是,我试图使用ngrok隧道作为callback_url来设置Webhook,并使用figaro gem将我的access_token
和verify_token
添加到我的应用程序中。
不知怎么的,考试总是过不了,我也不知道为什么。
我的ngrok网站在浏览器中运行得很好。但我认为问题源于Webhook没有接收到它想要的信息,从我的理解来看,也就是access_token
和verify_token
。
我尝试将ngrok隧道重定向到一个返回两个环境变量(ENV["ACCESS_TOKEN"]
和ENV["VERIFY_TOKEN"]
)的页面,但这不起作用。所以我只是不确定API期望什么以及为什么它没有得到它。
谢谢你的帮助!
screenshot of what I see on the fb developer platform
1条答案
按热度按时间frebpwbc1#
其实很简单,让我解释一下。
假设您将这两个函数公开为端点。
verify_webhook()有一个名为fb_app_token的字符串,这只是一个任意值的字符串,我在这里使用了GUID值。
另外,handle_webhook()也是你将要公开的实际callbackurl函数。
注意HTTP方法,尽管端点命名约定相同。
Facebook会向你提供的CallbackUrl发送一个GET请求。
回拨URL:https://www.myweb_or_ngrok.com/facebook/webhook
验证令牌:为fb_app_token生成的GUID
Facebook将在GET请求中的任何请求之前向您的callbackurl发送VerifyToken值。如果它们匹配,则Facebook确认它已命中正确的端点,并且它现在可以向您的callbackurl发送实际的POST请求。
太多提到callbackurl这个词了:)。
这应该会让你在FB上验证/注册你的callbackurl。