通过SHA1预期的X-Hub-Signature与FB发送的内容不同(C#中的代码)

问题描述 投票:1回答:1

我遇到问题,让我通过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。

c# facebook facebook-graph-api asp.net-web-api sha1
1个回答
0
投票

好的,所以我回答了我自己的问题! “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();
}
© www.soinside.com 2019 - 2024. All rights reserved.