В настоящее время я обновляю старое приложение Facebook до версии 4.0 PHP PHP SDK. Приложение просто отправляет сообщения на стену пользователя, тем самым запрашивая publish_actions разрешение от пользователя. Поскольку приложение еще не было отправлено на проверку, я тестирую его с учетной записью разработчика и одной учетной записью тестового пользователя.
Когда я вхожу в тестовую учетную запись пользователя и открываю приложение, приложение проверяет, publish_actions разрешение было предоставлено. В моем случае это нормально работает для тестового пользователя:
FacebookSession::setDefaultApplication($config['appId'], $config['secret']);
$helper = new FacebookCanvasLoginHelper();
try {
$session = $helper->getSession();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(\Exception $ex) {
// When validation fails or other local issues
}
if($session) { //When app installed
$request_perm = new FacebookRequest($session, 'GET', '/me/permissions');
$response_perm = $request_perm->execute();
$graphObjectPermissions = $response_perm->getGraphObject()->asArray();
$permissions = [];
foreach ($graphObjectPermissions as $key => $permObject) {
$permissions[$permObject->permission] = $permObject->status;
}
if(array_key_exists('publish_actions', $permissions) && $permissions['publish_actions']=='granted'){
echo "Permission granted!";
}
Однако, когда я вхожу в учетную запись разработчика и запрашиваю разрешения у тестового пользователя с ПОЛУЧИТЬ user_id / permissions, возвращенный graphObject не содержит разрешения publish_actions на всех (только электронная почта и общедоступный профиль).
array ( 'email' => 'granted', 'public_profile' => 'granted', )
Это код для запроса, $ access_token содержит токен доступа к приложению моего приложения.
$thisSession = new FacebookSession($access_token);
$request_perm = new FacebookRequest($thisSession, 'GET', '/' . $data['user_id'] . '/permissions');
$response_perm = $request_perm->execute();
$graphObjectPermissions = $response_perm->getGraphObject()->asArray();
$permissions = [];//create permissions array
foreach ($graphObjectPermissions as $key => $permObject) {
$permissions[$permObject->permission] = $permObject->status;
}
var_export($permissions);
Что мне нужно изменить / сделать, чтобы проверить разрешение publish_actions из учетной записи разработчика с помощью GET user_id / permissions?
Задача ещё не решена.
Других решений пока нет …