我怎么也弄不动这个。我正在使用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在这种情况下不再工作,因为他们增加了一些安全措施来防止滥用