【问题标题】:Facebook Fan Page Id in associated Facebook App相关 Facebook 应用中的 Facebook 粉丝专页 ID
【发布时间】:2011-10-16 22:57:51
【问题描述】:

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

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

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

非常感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

    让我分享一些见解

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


    步骤

    使用当前的 API,您可以在您的管理员页面中执行此操作

    • 请求用户连接并请求管理页面权限 (manage_page)
    • 拥有管理页面的权限,您可以轻松地在下拉列表中填写用户拥有的所有页面
    • 要求用户使用http://facebook.com/add.php?api_key=[API_KEY]&pages=1&page=[PAGE_ID] 将您的应用作为选项卡添加到其自己的页面

    现在您的应用已在用户页面上运行,您需要一种方法来检查该页面是否在 Facebook 内作为选项卡运行,以及运行的页面 ID 是什么。

    • 在您指定的 App Tab 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>
    

    要从您的应用中获取页面 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;
    }
    

    【讨论】:

    • 感谢您的回复。这真是一个伟大的洞察力和知识。但是我真的不能一直单独制作应用程序的副本。我想做的就像在这个 YouTube 视频 (youtube.com/watch?v=oORqblE28HI) 中解释。我只是想复制类似的东西。
    • 添加了 javascript 代码和 C# 代码,说明如何请求所有页面,将您的应用作为选项卡添加到用户页面,然后知道如何查看女巫页面正在请求您的应用。跨度>
    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多