【问题标题】:Update / Delete a tab from a facebook page using the Graph API returns "(#210) Subject must be a page."使用 Graph API 从 facebook 页面更新/删除选项卡返回“(#210) 主题必须是页面。”
【发布时间】:2012-01-29 03:58:43
【问题描述】:

我正在尝试从 facebook 页面中删除应用程序选项卡。 根据文档,我应该使用 PAGE 访问令牌向“https://graph.facebook.com/PAGE_ID/tabs/TAB_ID”发出删除请求,但是当我这样做时,我收到错误“(#210)主题必须是一页。” 尝试更新选项卡时也会发生同样的情况。 我已向用户请求“manage_pages”权限,并且我拥有正确的 access_token(添加选项卡效果很好)。 确切的请求是:https://graph.facebook.com/212757048770606/tabs/app_289329597785433(带有访问令牌)

有谁知道我做错了什么?或者是否有开放的错误报告?

非常感谢

【问题讨论】:

  • 请不要在您的帖子上签名。请参阅stackoverflow.com/faq#signatures 了解更多信息。
  • 您确定使用页面 access_token 进行删除(您从该页面的用户帐户连接中获得)?如果您使用用户的活动令牌,通常会引发此错误。
  • 是的,这是我用来添加标签的同一个 access_token(同一个标签)。顺便说一句,错误也出现在 Graph API Explorer...

标签: facebook-graph-api facebook-page


【解决方案1】:

我没有适合您的解决方案,但我知道我在删除选项卡时遇到了一些问题,这归结为选项卡的 ID(从获取 /PAGE_ID/tabs 的调用中返回)已经包含页面 ID 和“标签”路径。

最初,我通过获取标签 ID 并将其粘贴在 /PAGE_ID/tabs/ 的末尾来构建我的 URL,但这不起作用,因为 URL 最终类似于 /12345/tabs/12345/tabs/app_4567。一旦我意识到标签 ID 已经是某种“复合”,我就可以使用 Remove 了。

【讨论】:

    【解决方案2】:

    将页面访问令牌添加到 Facebook API 的调用中

    var PageAccessToken = 123456789123456789123456789123456789;
    FB.api(
        "/{page_id}/tabs",
        "POST",
        {
            "object": {
                "app_id": "{page_id}"
            }
        },{
        "access_token": PageAccessToken
        },
        function (response) {
          if (response && !response.error) {
            console.log(response);
          } else {
            console.log(response.error);
          }
        }
    );
    

    【讨论】:

      【解决方案3】:
        function DeleteTabPage(){  
              var pid = page_id;
              var at = access_tocken;           
              debugger;
              FB.api(pid + '/tabs/app_{your app id}', 'DELETE', { app_id: your app id, access_token: at }, function (response) {
                  debugger;
                  if (!response || response.error) {
                      debugger;`enter code here`
                      alert('Facebook add app error ' + response.error);
                  } else {
                      console.log(response);
                      debugger;
                      //  alert('App has been added');
                  }
              }); /* end of page/tabs*/
          }
      

      【讨论】:

      • 能否请您在您的回答中添加解释,以便对更多人有所帮助?
      • 虽然此代码可能有助于解决问题,但提供有关 why 和/或 如何 回答问题的额外上下文将显着改善其长期长期价值。请edit你的答案添加一些解释。
      猜你喜欢
      • 2014-07-08
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 2012-12-30
      • 2011-11-08
      • 2012-02-22
      • 2014-08-18
      • 1970-01-01
      相关资源
      最近更新 更多