【问题标题】:OAuthException "(#210) Subject must be a page."OAuthException "(#210) 主题必须是一个页面。"
【发布时间】:2012-01-13 20:19:26
【问题描述】:

即使我使用的是页面访问令牌而不是应用程序访问令牌,我也会不断收到 OAuthException (#210) Subject must be a page. 错误。

我正在使用以下内容:

  1. 来自 facebook 的最新 JavaScript SDK (//connect.facebook.net/en_US/all.js)
  2. 用户登录后使用 FB.api 方法调用/{PAGE_ID}/tabs?app_id={APP_ID}&method=POST&access_token={PAGE_ACCESS_TOKEN}

我的应用程序不是 FBML,而是 Canvas / iFrame 应用程序。我做错了什么?

我研究了包括 Stackoverflow 和其他 facebook 论坛在内的网络,但仍然没有答案。我的应用程序已启用 OAuth。

另外,如果我将链接复制并粘贴到浏览器中,它可以正常工作。如果我使用 API 进行操作,则不会。

【问题讨论】:

    标签: javascript facebook-graph-api facebook-javascript-sdk facebook-page facebook-oauth


    【解决方案1】:

    我终于搞定了。

    但是,我没有使用 FB.api 来调用上面的链接,而是使用了 jQuery。

    我使用了 jQuery "$.getJson(url)" 并且成功了。

    它的工作原理如下。

    如下构建链接。

    “https://graph.facebook.com/{PAGE_ID}/tabs?app_id={APP_ID}&method=POST&access_token={PAGE_ACCESS_TOKEN}&callback=?”

    如下调用 jQuery 方法。 "$.getJSON(pageUrl, OnCallBack);"其中“OnCallBack”是回调方法。您可以在回叫中做任何您需要的事情。就我而言,它类似于以下内容。

        function OnCallBack(r, s) {
    
            var html = "";
            if (s == "success" && !r.error) {
                for (p in r) {
                    html += p + ": " + r[p] + "<br />";
                }
            } else {
                html = r.error.message;
            }
            $("#dv").html(html);
        }
    

    【讨论】:

      【解决方案2】:

      致再次遇到此错误的任何人: 当我使用 wininet 向 https://graph.facebook.com/ 发布 https 请求时,我收到了相同的错误消息......

      我只是将动词从 "POST" 改为 "GET" ,然后效果很好:

      //string strVerb = "POST";
      string strVerb = "GET";
      

      PS:变量“strVerb”用作windows函数HttpOpenRequest的第二个参数。

      【讨论】:

        猜你喜欢
        • 2014-07-08
        • 2012-02-22
        • 2012-01-29
        • 2014-08-18
        • 2013-07-17
        • 2012-03-16
        相关资源
        最近更新 更多