我正在使用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);
那么如何重写登录?
答案 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调用来吸引他们的朋友。