Я пытаюсь получить массив отзывов клиентов (рейтинги?) С определенной страницы Facebook.
Я понимаю, что мне нужно manage_pages
разрешение на это, однако в соответствии с документами на facebook мне нужно представить свое приложение на рассмотрение, предоставляя шаги, необходимые для воспроизведения использования этого разрешения, а также скринкаст разрешения на использование.
У меня проблема в том, что я не могу использовать разрешение для предоставления шагов и скринкаста, потому что любая попытка сделать это приводит к тому, что API говорит мне, что ему нужно это разрешение. Так что немного парадокса на самом деле.
Я предполагаю, что должен быть какой-то способ воспроизвести шаги, необходимые в тестовой среде, но настроить тестовое приложение и использовать app_id
а также app_secret
из тестового приложения по-прежнему приводила к следующей ошибке:
Неустранимая ошибка: необработанное исключение ‘Facebook \ Exceptions \ FacebookAuthorizationException’ с сообщением ‘(# 200) Требуется разрешение manage_pages для управления объектом’
Мой код выглядит следующим образом:
<?php
$fb = new Facebook\Facebook([
'app_id' => $test_app_id,
'app_secret' => $test_app_secret,
'default_graph_version' => 'v2.8',
]);
if (isset($_GET['code'])) {
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
// Logged in!
$_SESSION['facebook_access_token'] = (string) $accessToken;
}
}
if (!isset($_SESSION['facebook_access_token'])) {
$helper = $fb->getRedirectLoginHelper();
$permissions = ['manage_pages'];
$loginUrl = $helper->getLoginUrl($site_url.'/fb-test.php', $permissions);
echo '<a href="' . $loginUrl . '" target="_blank">Log in with Facebook!</a>';
exit;
}
$access_token = $_SESSION['facebook_access_token'];
$response = $fb->get('/'.$page_id.'?fields=access_token', $access_token);
$page_access_token = $response->getDecodedBody()['access_token'];
$ratings = $fb->get('/'.$page_id.'/ratings', $page_access_token);
var_dump($ratings);
Изменить (следующий комментарий от luschn)
Я изменил свой код, чтобы включить следующее, но мне все еще говорят, что manage_pages
разрешение требуется.
<?php
$response = $fb->sendRequest(
'GET',
'/'.$page_id.'?fields=access_token',
array (
'user' => $user_id,
'role' => 'administrators',
'state' => rand(0,9999999)
),
$access_token
);
$page_access_token = $response->getDecodedBody()['access_token'];
$response = $fb->sendRequest(
'GET',
'/'.$page_id.'/ratings',
array (
'user' => $user_id,
'role' => 'administrators',
),
$page_access_token
);
echo '<pre>'.print_r($response,true).'</pre>';
exit;
Задача ещё не решена.
Других решений пока нет …