我在通过Facebook发送给我的X-Hub-Signature匹配我在C#中生成的X-Hub-Signature时遇到问题。有一阵子我以为我在运行该函数时出错,但是现在我在Stack Overflow和一个网站(http://billatnapier.com/security01.aspx)上使用了多个代码源来确认我确实在正确创建SHA-1。
所以....内容显然有问题。我正在使用ASP.NET Web API,并且我用来馈入SHA-1算法的“有效负载”是我从Facebook接收到的JSON对象,已转换为字符串。我以为这是他们说“有效载荷”时要我使用的对吗? 它是一个以{“ entry”:[开始,以“ object”:“ page”}结束的字符串
我觉得我已经尝试了一切,碰到了砖墙,希望有人能帮助我。 Web API有点过时-甚至抓住X-Hub-Signature也是一个挑战,因为您不能只使用Request.Header [“ X-Hub-Signature”];我几乎想知道是否应该切换回纯MVC。
答案 0 :(得分:0)
好的,所以我在回答自己的问题! “有效负载”的问题在于您不能简单地获取JSON对象。您必须找到一种从Web API访问Request对象的方法,然后像这样读取有效负载:
var context = Request.Properties["MS_HttpContext"] as HttpContextWrapper;
using (StreamReader reader = new StreamReader(context.Request.InputStream))
{
payload = reader.ReadToEnd();
}
好像对Web API进行装箱,然后在MVC中执行此操作会更容易,因为您只需执行以下操作:
using (StreamReader reader = new StreamReader(HttpContext.Request.InputStream))
{
PayLoad = reader.ReadToEnd();
}