全部, 我是Facebook编程的初学者。我的测试项目是一个简单的网站,显示Facebook帐户信息(仅名称和ID)以及该Facebook帐户的相册列表。问题是,在身份验证后,我可以获取配置文件数据,但我无法获得相册列表。 以下是获取个人资料信息的代码:
[FacebookAuthorize(LoginUrl = "~/Account/Login")]
public ActionResult Profile()
{
var fbWebContext = FacebookWebContext.Current;
if (fbWebContext.IsAuthorized())
{
try
{
var fb = new FacebookWebClient(fbWebContext);
var token = fb.AccessToken;
dynamic me = fb.Get("/me");
ViewBag.Name = me.name;
ViewBag.Id = me.id;
ViewBag.AccessToken = token;
}
catch (Exception ex)
{
{
fbWebContext.DeleteAuthCookie();
Session.Clear();
}
return RedirectToAction("Login", "Account");
}
}
return View();
}
这是获取专辑列表的代码
[FacebookAuthorize(LoginUrl = "~/Account/Login")]
public ActionResult Album()
{
var fb = new FacebookWebClient(FacebookWebContext.Current);
IDictionary<string, object> albums = fb.Get("me/albums") as IDictionary<string, object>;
dynamic albumList = albums["data"];
foreach (dynamic albumInfo in albumList)
{
if (ViewBag.Albums == null)
ViewBag.Albums = new List<string>();
ViewBag.Albums.Add(albumInfo.id);
}
return View();
}
在上面的代码中,albumList的项目数总是= 0。 你能帮我解决这个问题吗? 小调:我的测试网站是用C#编写的ASP.Net MVC3 Web应用程序。
编辑以回应安迪的回答:
事实上,我设置了很多权限,但仍然无法获得专辑列表。这是我的OAuth方法中的代码。
var parameters = new Dictionary<string, object>();
parameters.Add("permissions", "user_about_me,offline_access,user_photos,publish_stream");
dynamic tokenResult = oAuthClient.ExchangeCodeForAccessToken(code, parameters);
请注意,我确实尝试将“”权限替换为“范围”,但仍然失败。
答案 0 :(得分:1)
您是否申请了user_photos
权限?如果要访问其他用户数据,则需要在身份验证期间请求其他权限。
有关详细信息,请参阅此Facebook permissions page。
如果您使用的是Facebook JavaScript SDK FB.login方法,则只需将user_photos
权限添加到perms选项:
FB.login(function(response) {
if (response.session) {
if (response.perms) {
// user is logged in and granted some permissions.
// perms is a comma separated list of granted permissions
} else {
// user is logged in, but did not grant any permissions
}
} else {
// user is not logged in
}
}, {perms:'user_photos'});
希望这有帮助。