2014-09-02 4 views
0

Я пытаюсь запросить базовые разрешения для моего веб-приложения facebook на PHP. У меня есть следующий код:Facebook PHP SDK Scope Request

FacebookSession::setDefaultApplication('xxxxxxx', 'xxxxxxxx'); 

$helper = new FacebookRedirectLoginHelper('http://localhost:54321/xxxx.php'); 

try { 
    $session = $helper->getSessionFromRedirect(); 
} catch(FacebookRequestException $ex) { 
} catch(Exception $ex) { 
} 

if (isset($session)) { 
    $request = new FacebookRequest($session, 'GET', '/me'); 
    $response = $request->execute(); 
    $graphObject = $response->getGraphObject(); 

$params = array(
    'scope' => 'basic_info' 
); 

    echo print_r($graphObject, 1); 
} else { 
    echo '<a href="' . $helper->getLoginUrl($params) . '">Login</a>'; 
} 

Это дает ссылку URL, однако, когда я нажимаю, он перенаправляет на facebook URL и не с 500. Если удалить $params из getLoginURL, он функционирует нормально. Как использовать это для запроса дополнительных разрешений?

+0

Разрешение 'basic_info' больше не существует в API v2, оно заменено на' public_profile'. – CBroe

+0

И когда вы вызываете параметры getLoginURL $, параметры никогда не устанавливаются. – WizKid

ответ

0
  1. Метод getLoginUrl() принимает числовой массив разрешений. Вы используете ассоциативный массив. Правильное использование выглядит следующим образом: $params = array('email','public_profile');

  2. Как @WizKid указал, $params массив создается в первом блоке вашего if (isset($session)) заявления, так что никогда не будет передан getLoginUrl().

  3. Как @CBroe отметил, basic_info является depricated в Graph 2.x и теперь разделен на public_profile и user_friends.