Php 通过Open Graph API管理Facebook页面选项卡应用程序?
我一直在调查Facebook开放图形API。有一个“管理页面”扩展权限,允许通过“模拟”发布到用户的Facebook页面新闻提要/墙。这是一个很好的功能,但是您还可以通过API做什么呢 具体来说,我希望能够通过API从用户页面添加或删除“Tab”应用程序。目前,引导用户完成将tab应用程序添加到其业务(或地点)Facebook页面的过程非常复杂,如果他们可以授予我的应用程序权限,而我可以使用API为他们添加应用程序,那就太棒了 基本上,我想知道API是否允许真正的“页面管理”,或者只是发布到页面上 有人有这方面的经验吗 将他们指向带有“page”GET变量的“add.php”页面(例如)是我能做的最好的方法吗?这对于添加选项卡应用程序来说是可行的,但据我所知,没有任何东西可以帮助他们从页面中删除应用程序Php 通过Open Graph API管理Facebook页面选项卡应用程序?,php,facebook,facebook-opengraph,Php,Facebook,Facebook Opengraph,我一直在调查Facebook开放图形API。有一个“管理页面”扩展权限,允许通过“模拟”发布到用户的Facebook页面新闻提要/墙。这是一个很好的功能,但是您还可以通过API做什么呢 具体来说,我希望能够通过API从用户页面添加或删除“Tab”应用程序。目前,引导用户完成将tab应用程序添加到其业务(或地点)Facebook页面的过程非常复杂,如果他们可以授予我的应用程序权限,而我可以使用API为他们添加应用程序,那就太棒了 基本上,我想知道API是否允许真正的“页面管理”,或者只是发布到页面
谢谢 是的,您最好将它们指向add.php url。你无法帮助他们删除该应用程序 好消息是,用户过去必须经历添加过程,并通过在页面上的选项卡下拉列表中找到选项卡来实际决定“启用”选项卡。Facebook最近改变了这一点,似乎在用户将应用程序添加到其页面后,该选项卡立即启用
至于“有没有添加应用程序”的工作。。。索塔。它会告诉你该应用是否已添加到页面,但不会告诉你该选项卡是否已启用。例如,用户可以禁用该选项卡,但从技术上讲,仍然可以在页面上安装该应用程序。因此,“has_added_app”将返回true,即使该选项卡实际上不可见。有一种方法可以通过API实现。经过几个小时的汗水和泪水,我们终于让它开始工作了:) 您可以在不离开应用程序的情况下向页面添加选项卡。下面是我们用于此目的的代码片段。我们得到一个用户管理的页面列表,在下拉列表中显示它们,并要求它们选择要将“我的代理配置文件”选项卡添加到的页面 最终产品看起来是这样的-
protectedvoidbtnaddtab\u单击(对象发送方,事件参数e)
{
如果(ddlPage2.SelectedIndex>=0)
{
FaceBookPages页面=FaceBookPages.LookupByPageID(long.Parse(ddlPage2.SelectedValue));
如果(第==null页)
抛出新的NPlaySysException(“FaceBookPages为null”);
AnalyticLog=新的AnalyticLog();
log.EventID=fbcomon.Events.addagentaptabid;
log.UserID=UserID;
log.EventTime=DateTime.Now;
log.Update();
string result=FacebookSvc.AddTab(Web.agentapid,“me”,page.AccessToken);
if(result.Equals(“true”))
{
添加了FaceBookPages.UpdateAgentProfile(page.PageID,true);
List notTabbedPages=FaceBookPages.lookupagentprofilenotaddedbyserid(UserID);
imgStep3.ImageUrl=StepDoneImagePath;
divStep3.Attributes[“class”]=stepdonecsclass;
phStep3.可见=假;
Step3Done=true;
btnCloseStep3.Visible=false;
如果(notTabbedPages.Count>0)
btnEditStep3.Visible=true;
其他的
btnEditStep3.Visible=false;
}
其他的
{
lblerroradtab.Text=“未能将您的配置文件添加到页面。”;
EmailError(string.Format(“FacebookSvc.AddTab失败。结果={0}
用户ID={1}
页面ID={2}”,结果,用户ID,页面.PageID));
}
}
}
现在值得一提的是,对于任何看到这个问题的人来说(庆祝它的1岁生日!),Facebook在2011年7月大幅升级了API功能。现在,您可以通过Open Graph API添加、删除、重命名、重新排序选项卡并将其设置为默认值。博客帖子如下:
官方文件如下:
Facebook还没有一种新的API方法来创建新的标签应用程序,或者更改标签图标。这是一大步
更新:关于在API中创建应用程序,新的bug tracker上有一个bug要跟踪。如果您想跟踪它并查看它们的功能:看起来我至少可以通过“has_added_app”FQL查询查看我正在使用的应用程序是否已添加到页面中感谢您的回答!我担心情况就是这样,只是四处摸索以确保没有隐藏的“功能”。我将不得不玩has_added_应用程序,这至少有点帮助。谢谢Daniel,我将不得不尝试一下。刚刚发布了一个关于如何通过API更新时间轴页面的新选项卡图像的新问题和答案:官方选项卡文档的链接已更改为:
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));
}
}
}