Facebook SDK 4.0使用app access token to publish_actions - 查询user_id / permissions时缺少权限

时间:2015-05-05 09:46:34

标签: php facebook facebook-graph-api permissions publish-actions

我目前正在将旧的Facebook应用更新到Facebook PHP SDK 4.0版。该应用程序只是将消息发布到用户的墙上,从而请求用户的 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!";
}

但是,当我登录开发人员帐户并使用 GET 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);

为了使用GET user_id / permissions检查开发者帐户的publish_actions权限,我需要更改/执行哪些操作?

0 个答案:

没有答案