相关Facebook应用中的Facebook粉丝页面ID

时间:2011-09-29 06:48:36

标签: asp.net facebook-graph-api facebook-page

我正在开发一个facebook应用程序,需要在加载时获取以下信息。

  • 已添加应用程序的Facebook粉丝页面网址/ ID。
  • 如果从特定页面访问此应用程序的用户是该页面的管理员。

我正在使用ASP.Net开发此应用程序,我正在使用Facebook Graph API。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

让我分享一些见解

首先,我强烈建议您使用Microsoft的Facebook C# SDK而不是在.NET项目中使用普通调用。


的步骤

使用当前API,您可以在ADMIN Page

中执行此操作
  • 要求用户连接并询问管理页面权限(manage_page
  • 通过管理页面的权限,您可以轻松填写​​用户拥有的所有页面的下拉列表
  • 要求用户使用http://facebook.com/add.php?api_key=[API_KEY]&pages=1&page=[PAGE_ID]
  • 将您的应用添加到自己的页面作为标签

既然您已在用户页面上运行您的应用程序,您需要一种方法来检查该页面是否在Facebook内作为Tab运行,以及运行的页面ID是什么。

  • 在您指定的应用标签页面页面中,要求signed_request并验证Data,因为它有您需要的["page"]["id"],以便您可以检查保存Page_Id当您的用户将应用添加到Facebook页面时,您应该已经保存在ADMIN区域。

我希望这会有所帮助。

代码

要登录并请求所有用户页面

<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>

从您的应用获取网页ID

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;
}