Не удается получить список альбомов в Facebook - PullRequest
0 голосов
/ 11 мая 2011

Все, я новичок в программировании на Facebook.Мой тестовый проект - это простой веб-сайт, который отображает информацию об учетной записи Facebook (только имя и идентификатор) и список альбомов этой учетной записи 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. Можетпожалуйста, помогите мне решить эту проблему?Небольшое замечание: мой тестовый веб-сайт является веб-приложением ASP.Net MVC3, написанным на C #.

Редактировать в ответ на ответ Энди:

На самом деле я установил много разрешений, но все равно не могуполучить список альбомов.Вот код в моем методе 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 Ответ

1 голос
/ 11 мая 2011

Вы запрашивали разрешение user_photos?Вам нужно запросить дополнительные разрешения во время аутентификации, если вы хотите получить доступ к дополнительным данным пользователя.

См. Эту страницу разрешений Facebook для получения дополнительной информации.

Если вы используете FacebookJavaScript 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'});

Надеюсь, это поможет.

...