Facebook Идентификатор страницы вентилятора в связанном приложении Facebook

#asp.net #facebook-graph-api #facebook-page

#asp.net #facebook-graph-api #facebook-страница

Вопрос:

Я разрабатываю приложение Facebook, которое требовало получения приведенной ниже информации при загрузке.

  • URL / Id страницы поклонника Facebook, на которую было добавлено приложение.
  • Если пользователь, который обращается к этому приложению с определенной страницы, является администратором этой страницы или нет.

Я разрабатываю это приложение в ASP.Net и я использую Facebook Graph API.

Любая помощь приветствуется.

Ответ №1:

Позвольте мне поделиться некоторыми соображениями

Во-первых, я настоятельно рекомендую вам использовать Microsoft Facebook C # SDK вместо использования простых вызовов в вашем проекте .NET.


Шаги

С текущим API вы можете сделать это на своей странице администратора

  • Попросите пользователя подключиться и запросить разрешение на управление страницами ( manage_page )
  • с разрешениями для управления страницами вы можете легко заполнить выпадающий список всеми страницами, которые есть у пользователя
  • Попросите пользователя добавить ваше приложение на свою страницу в качестве вкладки, используя http://facebook.com/add.php?api_key=[API_KEY]amp;pages=1amp;page=[PAGE_ID]

Теперь, когда ваше приложение запущено на странице пользователя, вам нужен способ проверить, запущена ли эта страница внутри Facebook как вкладка или нет, и с какого идентификатора страницы она запущена.

  • На указанной вами странице URL-адреса вкладки вашего приложения запросите signed_request и проверьте Data , есть ли в нем то ["page"]["id"] , что вам нужно, чтобы вы могли сверить с идентификатором страницы сохранения, который вы должны были сохранить в области администрирования, когда ваш пользователь добавит ваше приложение на свою страницу facebook. страница.

Я надеюсь, что это поможет.

Код

Для входа в систему и запроса всех пользовательских страниц:

 <select class="facebook-page-list" disabled="disabled">
    <option>Facebook pages</option></select>

<script>
<!--
  FB.init({
     appId: 'API_KEY',
     cookie: true,
     status: true,
     xfbml: true
  });

  FB.api('/me', function (user) {
     if (user != null) {
        if (user.error) {
           $(".fb-login").show();
        } else {
           // example from Facebook
           var image = document.getElementById('image');
           image.src = 'https://graph.facebook.com/'   user.id   '/picture';
           var name = document.getElementById('name');
           name.innerHTML = user.name

           // get all user Pages
           facebookGetPages();
        }
     }
  });

  function facebookGetPages() {
     FB.getLoginStatus(function (response) {
        if (response.session) {
           access_token = response.session.access_token;
           FB.api(
           {
              method: 'fql.multiquery',
              access_token: access_token,
              queries: {
                 query1: 'select page_id from page_admin where type <> "APPLICATION" and uid = '   response.session.uid,
                 query2: 'select page_id, name, page_url from page where page_id in (select page_id from #query1)'
              }
           }, function (queries) {
              if (queries.error_msg)
                 alert(queries.error_msg);
              else {
                 pages = queries[1].fql_result_set;

                 $(".facebook-page-list").empty();
                 for (i = 0; i < pages.length; i  )
                    $(".facebook-page-list").append("<option value='"   pages[i].page_id   "'>"   pages[i].name   "</option>");
                 $(".facebook-page-list").attr("disabled", false);
              }
           });
        } else {
           // no user session available, someone you dont know
        }
     });
  }
//--> 
</script>
  

Чтобы получить идентификатор страницы из вашего приложения:

 ViewBag.signed_request = "can't get id";
dynamic signed_request = FacebookWebContext.Current.SignedRequest;
if(signed_request != null)
{
   ViewBag.signed_request = signed_request.Data.page.id;
}
  

Комментарии:

1. Спасибо за ответ. Это действительно отличное понимание и знания. Но я действительно не могу постоянно создавать отдельные копии приложения. То, что я пытаюсь сделать, похоже на объяснение в этом видео на YouTube ( youtube.com/watch?v=oORqblE28HI ). Я просто хочу повторить что-то подобное.

2. добавлен код javascript и код C # для того, чтобы вы могли запрашивать все страницы, добавлять свое приложение в качестве вкладки на страницу пользователя, а затем знать, как вы можете видеть, что страница witch запрашивает ваше приложение.