OAuthException "(#210) 主题必须是一个页面。"

Posted

技术标签:

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

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

我正在使用以下内容:

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

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

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

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

【问题讨论】:

【参考方案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的第二个参数。

【讨论】:

以上是关于OAuthException "(#210) 主题必须是一个页面。"的主要内容,如果未能解决你的问题,请参考以下文章

Instagram oauth api 给出 "code": 400, "error_type": "OAuthException", &

验证测试用户 "error_type": "OAuthException", "code": 400, "error_messa

OAuthException using Socialite with facebook - "message": "必须使用活动访问令牌来查询有关当前用户的信息。&qu

OAuthException error_message:“无效范围:[]”我做错了啥?

Instagram API OauthException:“您必须提供 client_id”

OAuthException: (#2) 未能创建任何应用请求