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

8
我一直在调查Facebook开放图谱API。有一个“管理页面”扩展权限,允许通过“冒名顶替”将内容发布到用户的Facebook页面新闻动态/墙上。这是很好的功能,但是API还可以做更多吗?
具体来说,我想能否通过API向用户的页面添加或删除“选项卡”应用程序。目前,指导用户通过流程向其业务(或地点)Facebook页面添加选项卡应用程序非常复杂,如果他们可以授权我的应用程序并且我可以使用API为他们添加应用程序,那将非常棒。
基本上,我想知道API是否允许真正的“页面管理”,还是只能发布到页面上。
有人对此有任何经验吗?
最好的方法是将它们指向带有“page” GET变量的“add.php”页面(例如http://www.facebook.com/add.php?api_key=xxxx&pages=1&page=xxxxxx)吗?这对于添加选项卡应用程序还可以,但据我所知,没有任何东西可以帮助他们从其页面中删除应用程序。
谢谢!

2
看起来我至少可以通过“has_added_app” FQL查询(http://developers.facebook.com/docs/reference/fql/page)查看我正在使用的应用程序是否已添加到页面中。 - thaddeusmt
3个回答

13
值得注意的是,对于查看此问题(庆祝其一周岁!)的任何人来说,Facebook在2011年7月显着升级了其API功能。您现在可以通过Open Graph API添加、删除、重命名、重新排序和设置选项卡为默认值。博客文章在这里:https://developers.facebook.com/blog/post/524/,官方文档在这里:https://developers.facebook.com/docs/reference/api/page/#tabs。但是,Facebook目前还没有用于创建新选项卡应用程序或更改选项卡图标的新API方法。尽管如此,这是一个很大的进步!更新:如果您想关注并查看他们所做的内容,可以关注新错误跟踪器上的错误:http://developers.facebook.com/bugs/295627350461318

刚刚发布了一个关于如何通过API更新时间线页面的新标签图像的问题和答案:https://dev59.com/72HVa4cB1Zd3GeqPigK-#9522597 - thaddeusmt
官方选项卡文档的链接已更改为:https://developers.facebook.com/docs/graph-api/reference/v2.2/page/tabs - donut

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));
        }
    }
}

谢谢丹尼尔,我得试试这个。 - thaddeusmt

2
是的,你能做的最好的事情就是将他们直接引导到add.php的URL。你无法帮助他们删除应用程序。
好消息是,用户以前必须通过添加过程并在页面的选项卡下拉列表中找到“启用”选项来决定是否启用该选项卡。Facebook最近进行了更改,似乎现在用户添加应用程序后立即启用该选项卡。
至于“has_added_app”,它能够起作用...有点。它将告诉您应用程序是否已添加到页面,但它不会告诉您选项卡是否已启用。例如,用户可以禁用选项卡,但仍然在页面上安装了应用程序。因此,“has_added_app”会返回true,即使选项卡实际上并不可见。

谢谢你的回答!我担心这就是情况,只是想确认一下是否有一些隐藏的“功能”。我将不得不尝试使用has_added_app,这至少有点帮助。 - thaddeusmt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接