OAuthException“(#210)主题必须是页面。”

时间:2011-12-06 07:02:04

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

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

我使用以下内容:

  1. 来自facebook (//connect.facebook.net/en_US/all.js的最新JavaScript SDK)
  2. 用户登录后使用FB.api方法调用/{PAGE_ID}/tabs?app_id={APP_ID}&method=POST&access_token={PAGE_ACCESS_TOKEN}
  3. 我的应用程序不是FBML ,而是Canvas / iFrame应用程序。我做错了什么?

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

    另外,如果我在浏览器中复制并粘贴链接,它可以正常工作。如果我使用API​​,它就不会。

2 个答案:

答案 0 :(得分:5)

我终于明白了。

但是,我没有使用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);
    }

答案 1 :(得分:3)

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

我刚刚将动词从“POST”改为“GET”,然后效果很好:

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

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