2011-09-29 104 views
0

我正在開發一個facebook應用程序,它需要在加載時獲取以下信息。Facebook粉絲頁面Id在關聯的Facebook應用程序

  • Facebook粉絲頁面URL /添加了應用程序的ID。
  • 如果從特定頁面訪問此應用程序的用戶是該頁面的管理員或不是。

我在ASP.Net中開發這個應用程序,我使用的是Facebook Graph API。

任何幫助,高度讚賞。

回答

0

讓我分享一些見解

首先,我會強烈建議你在你的.NET項目中使用微軟的Facebook C# SDK,而不是使用普通電話。


步驟

在當前的API,你可以做到這一點在你的管理頁面

  • 要求用戶進行連接,並要求與管理頁面的權限(manage_page
  • 管理頁面的權限,您可以輕鬆填滿用戶擁有的所有頁面的下拉列表
  • 要求用戶將您的應用添加到其自己的頁面如使用http://facebook.com/add.php?api_key=[API_KEY]&pages=1&page=[PAGE_ID]

現在你已經在用戶頁面上運行你的應用程序選項卡,你需要一種方法來檢查,如果該頁面中Facebook的運行作爲一個標籤或不是,什麼是運行到頁面ID從。

  • 在你的應用程序標籤網址頁面,您指定,索要signed_request和驗證Data,因爲它有["page"]["id"],你需要這樣你就可以檢查對節省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; 
} 
+0

感謝您的答覆。這真是一個偉大的洞察力和知識。但我實在無法一直分開製作應用程序。我想要做的就像在這個YouTube視頻中解釋(http://www.youtube.com/watch?v=oORqblE28HI)。我只是想複製這樣的東西。 –

+0

添加了JavaScript代碼和C#代碼,以便您可以請求所有頁面,將您的應用程序作爲選項卡添加到用戶頁面,然後知道如何看到女巫頁面正在請求您的應用程序。 – balexandre