При получении моих постов на фан-странице в Facebook через PHP теперь отображается «Требуется токен для запроса этого ресурса». - PullRequest
6 голосов
/ 06 июня 2011

Это довольно бешеная проблема.У нас был код, который работал прекрасно в течение нескольких месяцев, а теперь, внезапно, это не так.Код только использовал этот URL, чтобы захватить посты, которые мы делали на нашей фан-странице, и показать их на нашем сайте.http://graph.facebook.com/[our number] / feed? Limit = 10

Теперь это не работает, и я потратил смехотворное количество часов, просматривая результаты поиска по этой проблеме.К сожалению, все, что я нахожу, похоже, относится к приложениям Facebook, а не к фанатским страницам.Я не могу перестать видеть, как мне нужно аутентифицировать его, используя мой секретный ключ, но я не могу найти ничего, что показывает мне, что такое секретный ключ моей фан-страницы или существует ли он вообще.Я не могу, на всю жизнь, заставить эту штуку работать, и я не могу понять, почему она просто случайно перестала работать.

Вот ошибка, которую мы получаем:

{
   "error": {
      "type": "OAuthException",
      "message": "An access token is required to request this resource."
   }
}

РЕДАКТИРОВАТЬ: Так что большое спасибо Фрэнку Фармеру за то, что он нашел этот пост, проблема в том, что мне нужен токен доступа, который я не могу найти ЛЮБОЕ решениечтобы получить в любом месте.

Ответы [ 4 ]

3 голосов
/ 06 июня 2011

Способ, которым я смог это сделать, был:

  • Создание нового приложения для Facebook
  • Войдите в Facebook с пользователем, который является администратором страницы Facebook
  • Открыт запрос на разрешение для приложения

    https://www.facebook.com/dialog/oauth?client_id='the_application_id'&redirect_uri=http://your_redirect_uri/&scope=email,read_stream,user_birthday,user_about_me,user_likes,read_stream,user_education_history,user_work_history,user_groups,user_hometown,user_religion_politics,user_location,user_online_presence,user_relationships,user_status,user_website,read_friendlists,offline_access,manage_pages,ads_management,publish_stream

Ваш URI перенаправления ДОЛЖЕН совпадать с тем, что вы установили в настройках приложения в приложении Facebook.

  • Я в основном предоставил доступ ко всему для этого приложения, главное, в чем вы должны убедиться - это manage_pages

-После этого вам нужно будет скопировать часть «code = xxxxxx» ссылки, на которую вы пересылаетесь после принятия запроса на разрешение. Затем вы можете запросить код доступа для пользователя, как только он у вас появится, вы можете получить сообщения на странице Facebook, администратором которых является пользователь.

https://graph.facebook.com/oauth/access_token?client_id='the_application_id'&redirect_uri=http://your_redirect_uri/&client_secret='the_code_from_above'
  • Затем он ответит кодом доступа!

https://graph.facebook.com/feed?access_token='your_access_token'

Ниже приведен пример кода, который вы можете использовать с PHP Facebook SDK:

define('APP_ID', 'your_app_id');
        define('APP_API_KEY', 'your_app_api_key');
        define('APP_SECRET', 'your_app_secret');

        $fb = new Facebook(array(
            'appId' => APP_ID,
            'secret' => APP_SECRET,
            'cookie' => false
        ));

        $fb_user_id   = 'user_id_of_person_that_has_page_admin_rights';
        $access_token = urlencode('your_access_token_you_received');

        try {

            $user = $fb->api('/'.$fb_user_id,'GET',array('access_token'=>$access_token));
            $accounts = $fb->api('/'.$fb_user_id.'/accounts','GET',array('access_token'=>$access_token));

        } catch (FacebookApiException $e) {

            echo $e->getMessage();

        }

        echo "<strong>User Details:</strong><br />";
        foreach($user as $key => $value){
            echo ucwords(str_replace("_"," ",$key)).": ".$value."<br />";
            $fb->api('/feed','POST',array('access_token'=>$access_token,'id'=>$user_id,'message'=>'Add a post to the user's wall'));
        }

        echo "<br /><strong>Accounts Details:</strong><br />";
        foreach($accounts['data'] as $account){
            foreach($account as $key => $value){
                echo ucwords(str_replace("_"," ",$key)).": ".$value."<br />";
            }

            try {

                $posts = $fb->api('/'.$account['id'].'/posts','GET',array('access_token'=>$account['access_token']));

            } catch (FacebookApiException $e) {

                echo $e->getMessage();

            }

            echo "<br /><strong>-- Posts for this account:</strong><br />";

            foreach($posts['data'] as $post){
                foreach($post as $key => $value){
                    echo ucwords(str_replace("_"," ",$key)).": ".$value."<br />";
                }
                echo "<br />";
            }

        }
2 голосов
/ 06 июня 2011

Да, теперь требуется токен. Об этом они объявили в своем блоге.

http://developers.facebook.com/blog/post/509/

Срочные изменения: для API Graph PROFILE_ID / feed и PROFILE_ID / posts требуется access_token

API-интерфейс Graph PROFILE_ID / feed / для страницы, приложения, пользователя или группы и PROFILE_ID / posts для страницы или пользователя теперь будет требовать vaild access_token для доступа к стене или сообщениям соответствующего объекта (где ранее не было access_token) требуется).

* * 1010

Похоже, они уведомили только за неделю.

Вы должны подписаться на RSS-канал для их блога разработчиков . Они все время тянут такие вещи, хотя обычно они дают немного больше информации.

0 голосов
/ 23 октября 2013

URL

https://graph.facebook.com/oauth/access_token?client_id='the_application_id'&redirect_uri=http://your_redirect_uri/&client_secret='the_code_from_above'

не соответствует действительности.Секрет клиента - это секрет вашего приложения.Вам нужен дополнительный аргумент, например:

https://graph.facebook.com/oauth/access_token?client_id=[YOUR-APP-ID]&redirect_uri=http://your-uri(like in the app config)/&client_secret=[your-app-secret]&code=[code-from-above]
0 голосов
/ 07 ноября 2012

Получив токен личного доступа, наберите:

https://graph.facebook.com/me/accounts?access_token=token

где «токен» - ваш токен доступа. Это покажет вам все токены доступа для страниц, к которым у вас есть доступ. Теперь используйте этот токен доступа к странице, чтобы отправить:

/ page_username_id / корм '

где page_username_id - это либо идентификатор страницы, либо имя пользователя URL.

Надеюсь, это поможет. Skye

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...