Intereting Posts
Включить нижний колонтитул на любую страницу на сервере Не удалось подключиться к базе данных: доступ запрещен для пользователя '' @ 'localhost' в базу данных 'socialdb' Как сделать онлайн / оффлайн Я не могу получить свою форму для подключения, чтобы правильно взаимодействовать с базой данных mySQL Symfony2 – класс не найден Изменить значение css с помощью php Mysqli на WAMP, попытка подключения к ошибке не выполнена php получить пространство имен включенного файла Использование jQuery для синтаксического анализа XML, возвращаемого из PHP-скрипта (API imgur.com) PHP с лазурной базой данных Вход в Facebook с использованием PHP SDK не работает PHP: Поиск базы данных mysql с использованием нескольких списков выпадающих списков? PHP Fatal Error: вызов неопределенного метода Что означает прямоугольник за пределами границ PHP, как импортировать все классы из другого пространства имен

facebook Uncaught OAuthException: токен активного доступа должен использоваться для запроса информации о текущем пользователе

Я изо всех сил пытался узнать, что с этим происходит. Мои скрипты работали нормально и внезапно наполовину остановились.

Я обращаюсь к api, и я возвращаю токен доступа. Благодаря токену доступа я могу получить доступ к общедоступной информации пользователей. Однако, когда я пытаюсь отправить информацию в свою учетную запись FB, я получаю эту ошибку.

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. 

Любая идея, что здесь происходит? Я также использую сеансы на своем сайте для отслеживания внутренних идентификаторов пользователей. Не уверен, что мои сеансы могут вызвать проблемы.

Это мой сценарий загрузки, где я получаю сообщение об ошибке.

 require 'facebook/src/facebook.php'; // Create our Application instance (replace this with your appId and secret). $facebook = new Facebook(array( 'appId' => '12345678', 'secret' => 'REMOVED', 'fileUpload' => true, 'cookie' => true, )); $facebook->setFileUploadSupport(true); $me = null; // Session based API call. if ($session) { try { $uid = $facebook->getUser(); $me = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); } } // login or logout url will be needed depending on current user state. if ($me) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl(); } $photo_details = array('message' => 'my place'); $file='photos/my.jpg'; //Example image file $photo_details['image'] = '@' . realpath($file); $upload_photo = $facebook->api('/me/photos', 'post', $photo_details); 

Просто проверьте текущий пользователь ID $user Facebook и, если он вернет null, вам необходимо повторно авторизовать пользователя (или использовать пользовательское значение идентификатора пользователя $_SESSION – не рекомендуется)

 require 'facebook/src/facebook.php'; // Create our Application instance (replace this with your appId and secret). $facebook = new Facebook(array( 'appId' => 'APP_ID', 'secret' => 'APP_SECRET', )); $user = $facebook->getUser(); $photo_details = array('message' => 'my place'); $file='photos/my.jpg'; //Example image file $photo_details['image'] = '@' . realpath($file); if ($user) { try { // We have a valid FB session, so we can use 'me' $upload_photo = $facebook->api('/me/photos', 'post', $photo_details); } catch (FacebookApiException $e) { error_log($e); } } // login or logout url will be needed depending on current user state. if ($user) { $logoutUrl = $facebook->getLogoutUrl(); } else { // redirect to Facebook login to get a fresh user access_token $loginUrl = $facebook->getLoginUrl(); header('Location: ' . $loginUrl); } 

Я написал учебник о том, как загрузить изображение на стенку пользователя.

Использование:

 $facebook->api('/'.$facebook_uid) 

вместо

 $facebook->api('/me') 

оно работает.

Поэтому у меня была такая же проблема, но это было потому, что я сохранял токен доступа, но не использовал его. Это может быть потому, что я супер сонный из-за сроков, или, может быть, я просто не думал об этом! Но в случае, если кто-то еще находится в той же ситуации:

Когда я регистрирую пользователя, я сохраняю токен доступа:

 $facebook = new Facebook(array( 'appId' => <insert the app id you get from facebook here>, 'secret' => <insert the app secret you get from facebook here> )); $accessToken = $facebook->getAccessToken(); //save the access token for later 

Теперь, когда я делаю запросы в facebook, я просто делаю что-то вроде этого:

 $facebook = new Facebook(array( 'appId' => <insert the app id you get from facebook here>, 'secret' => <insert the app secret you get from facebook here> )); $facebook->setAccessToken($accessToken); $facebook->api(... insert own code here ...) 

Через определенное время истекает срок действия вашего токена доступа.

Чтобы предотвратить это, вы можете запросить разрешение «offline_access» во время аутентификации, как указано здесь: « Идентификаторы доступа Facebook Oauth 2.0 Expire?

Имела та же проблема, и решение заключалось в повторном авторизации пользователя. Проверьте это здесь:

 <?php require_once("src/facebook.php"); $config = array( 'appId' => '1424980371051918', 'secret' => '2ed5c1260daa4c44673ba6fbc348c67d', 'fileUpload' => false // optional ); $facebook = new Facebook($config); //Authorizing app: ?> <a href="<?php echo $facebook->getLoginUrl(); ?>">Login con fb</a> 

Сохраненный проект и открылся на моей тестовой среде, и он снова работал. Как и я, вы можете прокомментировать свой предыдущий код и попробовать.

У меня такая же проблема, когда вы пытаетесь получить информацию о пользователях без auth.

Проверьте, есть ли у вас вход в систему перед любым запросом.

  $uid = $facebook->getUser(); if ($uid){ $me = $facebook->api('/me'); } 

Вышеупомянутый код должен решить вашу проблему.

У меня была такая же проблема, но я могу решить эту проблему, очистив файлы cookie и кеш из моего браузера (ctrl+shift+R) . Кроме того, вы должны убедиться, что токен доступа активен.

Надеюсь, это поможет вам решить вашу проблему.