Невозможно получить статус "лайка" страницы с помощью Facebook C # SDK - PullRequest
3 голосов
/ 23 июня 2011

Я использую последнюю версию Facebook C # SDK (v5.0.40 на момент написания) отсюда: http://facebooksdk.codeplex.com/.

Я создал тестовое приложение iFrame в Facebook и запустил образец CSASPNETFacebookApp, чтобы он отображал имя пользователя, вошедшего в систему в данный момент в Facebook.

Теперь я хотел бы отобразить различный контент в моем iFrame в зависимости от того, понравилась ли пользователю страница. Однако signed_request, кажется, никогда не содержит эту информацию. Из того, что я могу видеть в FacebookSignedRequest.cs, я получу только полезную нагрузку, которая содержит информацию о странице, если алгоритм AES-256-CBC HMAC-SHA256 , но я получаю только HMAC-SHA256 вернулся.

Что я делаю не так? Как я могу получить его, чтобы вернуть информацию о странице? Это проблема с настройкой моего приложения в Facebook или проблема с приложением .NET?

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 27 августа 2011
var fb = new FacebookClient("access_token");

dynamic parameters = new ExpandoObject();
parameters.method = "pages.isFan";
parameters.page_id = "{you page id}";

dynamic result = fb.Get(parameters);
bool isFan = result == true;
2 голосов
/ 15 июля 2011

Ответ Нейла Найта технически правильный, вы можете использовать FQL, чтобы узнать, понравилась ли пользователю страница, и это помогло мне выбрать правильный путь. Однако моя проблема была на самом деле скорее в настройке, чем в коде. Чего я не понял, так это того, что вы получаете «похожую» информацию в подписанном запросе, только если ваше приложение работает в «контексте страницы». Если вы настроите его правильно, то Facebook передаст вашему приложению флаг «Нравится», и пользователю не нужно будет «Разрешать» ваше приложение.

Шаги:

(1) Создайте приложение iframe в Facebook

(2) Настройте URL-адрес вкладки для своего приложения в настройках приложения. Это то, что родительская страница будет использовать при создании ссылки в левом столбце для перехода к вашему приложению.

(3) Перейдите на свою «страницу профиля приложения», URL-адрес будет выглядеть примерно так: http://www.facebook.com/apps/application.php?id=12345 Где 12345 - идентификатор вашего приложения.

В левом столбце под изображением логотипа должна быть ссылка «Добавить на страницу». Если вы нажмете на эту ссылку, вам будет представлен список страниц, для которых вы являетесь администратором. Выберите нужную страницу в своем приложении.

Теперь, если вы перейдете на свою страницу, вы должны получить ссылку на ваше приложение в левой колонке. Только при переходе по этой ссылке вы получите идентификатор страницы и статус, который будет передан вашему приложению.

Надеюсь, это поможет кому-то, имеющему ту же проблему.

0 голосов
/ 23 июня 2011

Вы можете использовать FQL для достижения этой цели. Я только что сделал это, используя следующее утверждение:

var the_query = FB.Data.query("SELECT uid FROM page_fan WHERE page_id = {0} and uid={1}", page_id, user_id);

Чтобы это работало, я должен был попросить пользователя «Разрешить» мое приложение, чтобы у меня было разрешение проверить, понравилась ли ему страница. Тогда это был простой случай проверки результата и отображения необходимого <div>:

the_query.wait(function (rows) {
    if (rows.length == 1 && rows[0].uid == user_id) {
        $("#myLikeContent").show();
    } else {
        $("#myNoLikeContent").show();
    }
});
...