使用VS.NET新版的Web範本中,有實作登入 FB 或 Google 的方式,
那登入後,要如何取得登入者的朋友清單。
當我們登入FB後,可以取回 AccessToken ,
這時我們可以用這個 Token 來取得我們要的資料。
在取得朋友清單之前,先從 Nuget 安裝 Facebook SDK for .NET ,如下,
安裝完成後,開啟 App_Start\Startup.Auth.cs 的 ConfigureAuth Method中,
先建立 FacebookAuthenticationOptions ,然後在取得 Token 後就可以取得朋友的清單,如下,
var options = new FacebookAuthenticationOptions
{
AppId = "",
AppSecret = "326d7548dcf8b669ef00e70997f8284a",
Provider = new FacebookAuthenticationProvider
{
OnAuthenticated = async context =>
{
string accessToken = context.AccessToken;
var client = new FacebookClient(accessToken);
//有用這個app的朋友
dynamic appFriends = client.Get("/me/friends");
var appFriendsList = (from i in (IEnumerable<dynamic>)appFriends.data
select new
{
i.name,
i.id
}).ToList();
//可以邀請的朋友
dynamic invitableFriends = client.Get("/me/invitable_friends");
var invitableFriendsList = (from i in (IEnumerable<dynamic>)invitableFriends.data
select new
{
i.name,
i.id
}).ToList();
await Task.FromResult(0);
}
}
};
//https://developers.facebook.com/docs/facebook-login/permissions
//options.Scope.Add("read_custom_friendlists");
app.UseFacebookAuthentication(options);
註: FB API 2.x 之後,/me/friends 就只取得到有使用這個 AP 的 朋友,如果要取得其他的朋友資訊,可以用 /me/invitable_friends
參考資料
Facebook Graph Api v2.0+ - /me/friends returns empty, or only friends who also use my app
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^