使用web.api验证Facebook Messenger webhook失败



我怎么也弄不动这个。我正在使用Web。API和我的验证函数看起来像:

[HttpGet]
public HttpResponseMessage Webhook()
{
string token = HttpContext.Current.Request.QueryString["hub.verify_token"];
string challenge = HttpContext.Current.Request.QueryString["hub.challenge"];
string mode = HttpContext.Current.Request.QueryString["hub.mode"];
if (token.Equals("rwJsKJqHx7g0"))
{
return new HttpResponseMessage()
{
Content = new StringContent(challenge)
};
}
else
{
return new HttpResponseMessage()
{
Content = new StringContent("")
};
}
}

路由是这样的:

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

手动调用:

https://host/site/ControllerName?hub.mode=subscribe& hub.challenge = 1234, hub.verify_token = rwJsKJqHx7g0

返回纯文本形式的1234,如您所期望的。

主机当前使用有效的SSL证书。

我通过ngrok在本地运行这个,URL的工作方式如我所料,当我手动执行时,但当试图在FB中添加钩子时,它甚至没有命中。

错误是"无法验证回调URL或验证令牌"。请验证提供的信息,或稍后再试。">

提前谢谢你。

尝试将您的应用程序部署到一些合法的主机,如AWS, heroku等。我认为ngrok在这种情况下不再工作,因为他们增加了一些安全措施来防止滥用

最新更新