Php 通过Open Graph API管理Facebook页面选项卡应用程序?

Php 通过Open Graph API管理Facebook页面选项卡应用程序?,php,facebook,facebook-opengraph,Php,Facebook,Facebook Opengraph,我一直在调查Facebook开放图形API。有一个“管理页面”扩展权限,允许通过“模拟”发布到用户的Facebook页面新闻提要/墙。这是一个很好的功能,但是您还可以通过API做什么呢 具体来说,我希望能够通过API从用户页面添加或删除“Tab”应用程序。目前,引导用户完成将tab应用程序添加到其业务(或地点)Facebook页面的过程非常复杂,如果他们可以授予我的应用程序权限,而我可以使用API为他们添加应用程序,那就太棒了 基本上,我想知道API是否允许真正的“页面管理”,或者只是发布到页面

我一直在调查Facebook开放图形API。有一个“管理页面”扩展权限,允许通过“模拟”发布到用户的Facebook页面新闻提要/墙。这是一个很好的功能,但是您还可以通过API做什么呢

具体来说,我希望能够通过API从用户页面添加或删除“Tab”应用程序。目前,引导用户完成将tab应用程序添加到其业务(或地点)Facebook页面的过程非常复杂,如果他们可以授予我的应用程序权限,而我可以使用API为他们添加应用程序,那就太棒了

基本上,我想知道API是否允许真正的“页面管理”,或者只是发布到页面上

有人有这方面的经验吗

将他们指向带有“page”GET变量的“add.php”页面(例如)是我能做的最好的方法吗?这对于添加选项卡应用程序来说是可行的,但据我所知,没有任何东西可以帮助他们从页面中删除应用程序


谢谢

是的,您最好将它们指向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));
        }
    }
}