2010-09-21 114 views
8

我一直在調查Facebook Open Graph API。有一個「管理頁面」的擴展權限,允許通過「模仿」發佈到用戶的Facebook Page新聞提要/牆上。這是很好的功能,但是您還可以通過API做更多事情嗎?通過Open Graph API管理Facebook頁面標籤應用程序?

具體來說,我希望能夠通過API從用戶頁面添加或刪除「Tab」應用程序。現在,指導用戶完成向其業務(或Place)Facebook頁面添加選項卡應用程序的過程非常複雜,如果他們可以授予我的應用程序權限並且可以使用API​​爲他們添加應用程序。

基本上我想知道如果API允許真正的「頁面管理」,或只是張貼到頁面。

任何人都有這方面的經驗?

我可以用「頁面」GET變量(例如http://www.facebook.com/add.php?api_key=xxxx&pages=1&page=xxxxxx)將它們指向「add.php」頁面嗎?這對於添加標籤應用程序是行得通的,但根本沒有什麼可以幫助他們從他們的頁面中刪除應用程序。

謝謝!

+2

它看起來像我可能能夠至少看看我正在使用的應用程序是否已通過「has_added_app」FQL查詢添加到頁面http://developers.facebook.com/docs/reference/fql/page – thaddeusmt 2010-09-21 03:31:39

回答

13

值得一現指出,對任何人觀看了這個問題(!這是慶祝它的一週歲生日),稱Facebook顯著升級了他們的API功能回現在您可以通過Open Graph API添加,刪除,重命名,重新排序並將標籤設置爲默認。這篇博客是在這裏:

https://developers.facebook.com/blog/post/524/

而且官方文檔是在這裏:

https://developers.facebook.com/docs/reference/api/page/#tabs

什麼Facebook並沒有尚未是一個用於創建新標籤應用了新的API方法,或更改選項卡圖標。儘管這是一大步!

UPDATE:上有新的bug跟蹤系統,遵循有關API創建的應用程序,如果你想跟蹤一下,看看他們在做什麼錯誤:http://developers.facebook.com/bugs/295627350461318

+0

剛剛發佈了一個關於如何通過API更新時間軸頁面的新選項卡圖像的問題和解答:http://stackoverflow.com/questions/9503366/how-to-upload-custom-app-image-tab-image -for-timeline-page-tabs-via-api/9522597 – thaddeusmt 2012-03-01 19:38:34

+0

官方選項卡文檔的鏈接已更改爲:https://developers.facebook.com/docs/graph-api/reference/v2.2/page/標籤 – donut 2015-01-21 17:54:47

2

是的,你可以做的最好的事情是引導他們到add.php網址。你無法做任何事情來幫助他們刪除應用程序。

好消息是,用戶過去必須經歷添加過程,並在頁面的標籤下拉列表中找到它,並且實際決定「啓用」標籤。 Facebook最近改變了這一點,看起來這個標籤現在在用戶將該應用添加到他們的頁面後立即啓用。

至於「has_added_app」,它的工作原理... sorta。它會告訴你該應用是否被添加到頁面,但它不會告訴你該選項卡是否啓用。例如,用戶可以禁用該選項卡,但技術上仍然在該頁面上安裝應用程序。因此,即使該選項卡實際上不可見,「has_added_app」也會返回true。

+0

感謝您的答案!我擔心這種情況,只是想方設法確保沒有一些隱藏的「特徵」。我將不得不玩弄has_added_app,這至少有點幫助。 – thaddeusmt 2010-09-22 02:08:28

3

有一種方法可以通過API來完成。我們終於在經過了許多小時的汗水和淚水之後才得以工作:)

您可以在不離開您的應用程序的情況下在頁面上添加一個選項卡。以下是我們用於此的代碼片段。我們得到用戶管理的頁面列表,並通過下拉菜單顯示他們,並要求他們選擇要將我們的「我的代理人檔案」選項卡添加到的頁面。

和最終產品看起來是這樣的 - http://www.facebook.com/pages/Jennifer-Anderson-Real-Estate-Agent/185071901564573?sk=app_253956901293839

protected void btnAddTab_Click(object sender, EventArgs e) 
{ 
    if (ddlPage2.SelectedIndex >= 0) 
    { 
     FaceBookPages page = FaceBookPages.LookupByPageID(long.Parse(ddlPage2.SelectedValue)); 
     if (page == null) 
      throw new NPlaySysException("FaceBookPages is null."); 

     AnalyticLog log = new AnalyticLog(); 
     log.EventID = FBCommon.Events.AddAgentAppTabID; 
     log.UserID = UserID; 
     log.EventTime = DateTime.Now; 
     log.Update(); 

     string result = FacebookSvc.AddTab(Web.AgentAppID, "me", page.AccessToken); 
     if (result.Equals("true")) 
     { 
      FaceBookPages.UpdateAgentProfileAdded(page.PageID, true); 
      List<FaceBookPages> notTabbedPages = FaceBookPages.LookupAgentProfileNotAddedByUserID(UserID); 

      imgStep3.ImageUrl = StepDoneImagePath; 
      divStep3.Attributes["class"] = StepDoneCssClass; 
      phStep3.Visible = false; 
      Step3Done = true; 
      btnCloseStep3.Visible = false; 

      if (notTabbedPages.Count > 0) 
       btnEditStep3.Visible = true; 
      else 
       btnEditStep3.Visible = false; 
     } 
     else 
     { 
      lblErrorAddTab.Text = "Failed to add your profile to page."; 
      Web.EmailError(string.Format("FacebookSvc.AddTab Failed. result={0}<br />UserID={1}<br />PageID={2}", result, UserID, page.PageID)); 
     } 
    } 
} 
+0

謝謝丹尼爾,我將不得不嘗試一下。 – thaddeusmt 2011-10-04 15:53:24

相關問題