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