如何在ASP.NET中获取Facebook好友列表?

时间:2015-02-06 18:54:39

标签: facebook asp.net-mvc-5

我正在使用ASP.NET MVC 5和Identity构建应用程序 到目前为止,登录工作正常 这里是auth:

var fb = new FacebookAuthenticationOptions();
fb.Scope.Add("email");
fb.Scope.Add("friends_about_me");
fb.Scope.Add("friends_photos");
fb.AppId = "";
fb.AppSecret = "";
fb.Provider = new FacebookAuthenticationProvider() {
    OnAuthenticated = async FbContext => {
        FbContext.Identity.AddClaim(
            new System.Security.Claims.Claim("FacebookAccessToken", FbContext.AccessToken));
    }
};
fb.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;
app.UseFacebookAuthentication(fb);  

我试图获取好友列表。我一直在寻找一些例子,但没有人使用这个版本的MVC 5 我的问题是。如何使用此版本获取所有朋友?

我不想使用Javascript API,我想要c#中的所有代码然后发送到视图。

我想我只需要重写登录并将访问令牌存储在会话中,然后只需致电var client = new FacebookClient(TOKEN);
那么如何重写登录?

1 个答案:

答案 0 :(得分:1)

你已经拥有了所需的一切。您设置的OnAuthenticated回调会添加包含Facebook访问令牌的声明。您只需要为用户提出索赔:

var identity = (ClaimsIdentity)User.Identity;
var facebookClaim = identity.Claims.FirstOrDefault(c => c.Type == "FacebookAccessToken");
if (facebookClaim != null)
{
    // access facebook API with `facebookClaim.Value`
}

如果它存在,那么您可以使用Facebook API通过HttpClient之类的标准HTTP调用来吸引他们的朋友。