OAuthException "(# 210) Тема должна быть страницей." - PullRequest
8 голосов
/ 06 декабря 2011

Я получаю ошибку OAuthException (#210) Subject must be a page., даже если я использую токен доступа к странице , а не токен доступа к приложению .

Я использую следующее:

  1. Последний JavaScript SDK от Facebook (// connect.facebook.net/en_US/all.js)
  2. Вызов /{PAGE_ID}/tabs?app_id={APP_ID}&method=POST&access_token={PAGE_ACCESS_TOKEN} с использованием метода FB.api после входа пользователя в систему.

Мое приложение не FBML , а приложение Canvas / iFrame. Что я делаю не так?

Я исследовал сеть, включая Stackoverflow и другие форумы в Facebook, но до сих пор не получил ответа на этот вопрос. OAuth включен для моего приложения.

Кроме того, если я скопирую и вставлю ссылку в браузере, она будет работать нормально. Нет, если я делаю это с помощью API.

Ответы [ 2 ]

5 голосов
/ 08 декабря 2011

Наконец-то все заработало.

Однако вместо того, чтобы использовать 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);
    }
3 голосов
/ 30 июля 2012

Всем, кто снова получит эту ошибку: Я получаю то же сообщение об ошибке, когда использую wininet для отправки запроса https на https://graph.facebook.com/......

Я просто изменил глагол с «POST» на «GET», и тогда он работает хорошо:

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

PS: переменная "strVerb" используется в качестве второго параметра функции Windows HttpOpenRequest.

...