繁体   English   中英

Facebook取消授权ASP.NET Web API

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM