8

我一直在研究 Facebook Open Graph API。有一个“管理页面”扩展权限,允许通过“模拟”发布到用户的 Facebook 页面新闻源/墙。这是很好的功能,但是您可以通过 API 做更多的事情吗?

具体来说,我希望能够通过 API 从用户页面添加或删除“选项卡”应用程序。现在,引导用户完成将标签应用程序添加到他们的业务(或地方)Facebook 页面的过程很复杂,如果他们可以授予我的应用程序权限并且我可以使用 API 为他们添加应用程序,那就太棒了.

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

有人对此有经验吗?

我能做的最好的事情是用“page”GET变量(例如http://www.facebook.com/add.php?api_key=xxxx&pages=1&page=xxxxxx)将它们指向“add.php”页面吗?这适用于添加选项卡应用程序,但据我所知,没有什么可以帮助他们从他们的页面中删除应用程序。

谢谢!

4

3 回答 3

13

现在值得注意的是,对于查看此问题的任何人(正在庆祝它的第一个生日!),Facebook 在 2011 年 7 月显着升级了他们的 API 功能。您现在可以通过开放图形 API。博客文章在这里:

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

官方文档在这里:

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

Facebook 还没有用于创建新标签应用程序或更改标签图标的新 API 方法。虽然这是一大步!

更新:如果您想关注它并查看它们的功能,新的错误跟踪器上有关于在 API 中创建应用程序的错误:http: //developers.facebook.com/bugs/295627350461318

于 2011-10-04T15:57:49.057 回答
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));
        }
    }
}
于 2011-10-04T15:44:13.903 回答
2

是的,您能做的最好的就是将它们定向到 add.php 网址。您无法帮助他们删除该应用程序。

好消息是,用户过去必须通过添加过程并通过在页面上的选项卡下拉列表中找到它来物理决定“启用”选项卡。Facebook 最近改变了这一点,现在似乎在用户将应用程序添加到他们的页面后立即启用该选项卡。

至于有效的“has_added_app”......有点。它会告诉您应用程序是否已添加到页面,但不会告诉您选项卡是否已启用。例如,用户可以禁用选项卡,但从技术上讲,该应用程序仍安装在页面上。因此,即使选项卡实际上不可见,“has_added_app”也会返回 true。

于 2010-09-22T01:20:07.337 回答