通过Open Graph API管理Facebook页面标签应用程序?

问题描述:

我一直在调查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

值得一现指出,对任何人观看了这个问题(!这是庆祝它的一周岁生日),称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://*.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

是的,你可以做的最好的事情是引导他们到add.php网址。你无法做任何事情来帮助他们删除应用程序。

好消息是,用户过去必须经历添加过程,并在页面的标签下拉列表中找到它,并且实际决定“启用”标签。 Facebook最近改变了这一点,看起来这个标签现在在用户将该应用添加到他们的页面后立即启用。

至于“has_added_app”,它的工作原理... sorta。它会告诉你该应用是否被添加到页面,但它不会告诉你该选项卡是否启用。例如,用户可以禁用该选项卡,但技术上仍然在该页面上安装应用程序。因此,即使该选项卡实际上不可见,“has_added_app”也会返回true。

+0

感谢您的答案!我担心这种情况,只是想方设法确保没有一些隐藏的“特征”。我将不得不玩弄has_added_app,这至少有点帮助。 – thaddeusmt 2010-09-22 02:08:28

有一种方法可以通过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