无法获得Facebook的专辑列表

时间:2011-05-10 21:45:19

标签: c# facebook-c#-sdk

全部, 我是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);

请注意,我确实尝试将“”权限替换为“范围”,但仍然失败。

1 个答案:

答案 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'});

希望这有帮助。