Граф вернул ошибку, требуется расширенное разрешение business_management

Мое приложение имеет разрешения ads_management, business_management и стандартного уровня, поэтому, когда я пытаюсь войти в систему из своей учетной записи Facebook, оно успешно извлекает информацию. Но когда мой клиент входит в систему с помощью fb, он показывает ошибку

Graph returned an error: (#200) Requires extended permission: business_management

Я делаю следующий вызов API v2.8

$fb = new \Facebook\Facebook([
 'app_id'                 => $appId,
 'app_secret'         => $appSecret,
 'default_graph_version' => $graph_api_version,
]);

$response = $fb->get('/me/businesses', $accessToken); 

введите здесь описание изображения

введите здесь описание изображения

Какие могут быть причины и возможные пути решения?


person Jass    schedule 01.11.2016    source источник
comment
Проверяет ли ваше приложение Facebook команда разработчиков Facebook? Если нет, вам нужно будет сначала отправить его на проверку приложения, после чего его смогут использовать только ваши клиенты.   -  person Haridarshan    schedule 01.11.2016
comment
Думаю, да, потому что только после проверки командой fb мы получаем разрешение ads_management, business_management и стандартный уровень. Я прав или ты что-то другое?   -  person Jass    schedule 01.11.2016
comment
Вы отправили приложение на проверку приложения? Если вы указаны как разработчик/тестировщик в разделе Роли, то без отправки на проверку приложений расширенные разрешения будут работать. Для проверки приложения вам необходимо просмотреть весь поток требуемых расширенных разрешений и отправить его.   -  person Haridarshan    schedule 01.11.2016
comment
В FB › ПРИЛОЖЕНИЕ › Обзор приложения › У меня есть управление бизнесом, электронная почта, общедоступный_профиль, друзья пользователя, стандартный доступ к API управления рекламой и базовый доступ к управлению рекламой   -  person Jass    schedule 01.11.2016
comment
Все эти разрешения зеленые??   -  person Haridarshan    schedule 01.11.2016
comment
Если они зеленые, то при создании URL-адреса входа в facebook проверьте, добавлены ли разрешения или нет.   -  person Haridarshan    schedule 01.11.2016
comment
Да, я представил скриншот, когда получал одобрение business_management и в роли администратора. Да, все разрешения зеленые Позвольте мне прикрепить 2 снимка экрана, которые дадут вам больше ясности   -  person Jass    schedule 01.11.2016
comment
Я отредактировал свой пост и добавил скриншоты. пожалуйста, проверьте   -  person Jass    schedule 01.11.2016
comment
Одобрено Facebook не означает предоставлено пользователем. Вам по-прежнему необходимо спросить разрешение у пользователя.   -  person CBroe    schedule 01.11.2016


Ответы (1)


Попробуй это

$fb = new \Facebook\Facebook([
 'app_id'                 => $appId,
 'app_secret'         => $appSecret,
 'default_graph_version' => $graph_api_version,
]);

$helper = $fb->getRedirectLoginHelper();

$permissions = [
    'email', 
    'user_friends', 
    'manage_pages', 
    'business_management',
    'ads_management'
];


$fb_url = $helper->getLoginUrl(
    <callbackUrl>, 
    $permissions
);

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

Сценарий обратного вызова

$fb = new \Facebook\Facebook([
    'app_id'                 => $appId,
    'app_secret'         => $appSecret,
    'default_graph_version' => $graph_api_version,
]);

$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;
}

// The OAuth 2.0 client handler helps us manage access tokens
$oAuth2Client = $fb->getOAuth2Client();

// Exchange short-lived access token with long-lived access token
if (!$accessToken->isLongLived()) {
    // Exchanges a short-lived access token for a long-lived one
    try {
        $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
    } catch (Facebook\Exceptions\FacebookSDKException $e) {
        echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
        exit;
    }
}

Сохраните токен доступа и перенаправьте пользователя, где вы запрашиваете это

$response = $fb->get('/me/businesses', $accessToken); 
person Haridarshan    schedule 01.11.2016
comment
Спасибо большое, дорогой. Это сработало. я принял твой ответ - person Jass; 01.11.2016
comment
Есть ли у вас какое-либо представление о заголовке stackoverflow.com/questions/40128230/ или stackoverflow.com/questions/ 40148315/ На самом деле это тот же вопрос, но заданный двумя способами. - person Jass; 01.11.2016