[英]Facebook Deauthorization ASP.NET Web API
我浏览了有关Facebook取消授权URL的所有帖子,但都没有解决我的问题。 我有一个ASP.Net Web Api 2终结点,但是我无法正确执行ping操作。 这是我的路线签名的样子:
[AllowAnonymous, Route("FacebookDeauthorize"), HttpPost]
public async Task<IHttpActionResult> FacebookDeauthorize(string signed_request)
{
//code for reading it
}
结果是404,所以我尝试将类型更改为object并获取类型,以便我可以弄清楚它的含义。 当我尝试访问该对象时,它引发了一个空引用异常,因此我认为它根本没有通过。 由于这是Web API,因此无法查看表单请求以从中获取签名的请求。 有没有人成功地将其与Web Api一起使用? 关于路由签名应该是什么的任何帮助/指针?
对于发现此问题的其他人,这是asp.net Web api和Facebook c#sdk的工作端点,诀窍是使用模型而不是原始函数:
public class FacebookDeauthModel
{
public string signed_request { get; set; }
}
[AllowAnonymous]
[Route("FacebookDeauthorize")]
[HttpPost]
public async Task<IHttpActionResult> FacebookDeauthorize(FacebookDeauthModel model)
{
FacebookClient fb = new FacebookClient();
dynamic signedRequest = JsonConvert.DeserializeObject(fb.ParseSignedRequest("YOUR_APP_SECRET", model.signed_request).ToString());
string FBUserID = signedRequest.user_id;
ApplicationUser user = UserManager.FindBy(x => x.FBAppID == FBUserID);
if (user != null)
{
user.IsActive = false;
user.InactiveReason = "Facebook deauthorized on " + DateTime.UtcNow;
await UserManager.UpdateAsync(user);
}
else
{
_tracer.Error(Request, "FacebookDeauthorize", "Facebook tried to deauthorize a user we do not have record of, FBAppID: {0}", FBUserID);
}
return Ok();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.