授予Facebook Canvas应用程序发布权限以进行测试

时间:2014-05-12 07:03:54

标签: php facebook facebook-php-sdk

我创建了一个简单的画布应用程序。我已在facebook中设置了访问令牌,但此访问令牌的范围为public_profile,basic_info,user_friends

我也想添加public_action,所以我也可以测试发布。

我正在使用php FacebookSdk 4.0及以下代码

// init app with app id (APPID) and secret (SECRET)
FacebookSession::setDefaultApplication('{app_id}','{app_secret}');
$helper = new FacebookCanvasLoginHelper();

try {

          $session = $helper->getSession();

} catch (\Exception $ex) {
  echo $ex->getMessage();
}

if($session) 
{
    $request = new FacebookRequest( $session, 'GET', '/me' );
    try{
         $response = $request->execute();
         $graphObject = $response->getGraphObject();
         //echo  print_r( $graphObject, 1 );
    } catch(FacebookRequestException $ex) {
         echo $ex->getMessage();
    } catch (\Exception $ex) {
        echo $ex->getMessage();
    }

    try{
     $response = (new FacebookRequest(
      $session, 'POST', '/me/feed', array(
        'link' => 'www.example.com',
        'message' => 'User provided message'
      )
    ))->execute()->getGraphObject();
    } catch(FacebookPermissionException $ex) {
         echo $ex->getMessage();
    } catch (\Exception $ex) {
        echo $ex->getMessage();
    }
}
else 
{
 // show login url  
}

有错误

(#200) The user hasn't authorized the application to perform this action

我如何给自己发布权限?

我已设法使用以下代码获取发布权限

          $url = 'https://www.facebook.com/dialog/oauth?client_id=xxx
&redirect_uri=https://xxxx/v1/&scope=publish_actions';

以下是我在Fb开发者文档中的代码

  try {

    $response = (new FacebookRequest(
      $session, 'POST', '/me/feed', array(
        'link' => 'www.example.com',
        'message' => 'User provided message'
      )
    ))->execute()->getGraphObject();

    echo "Posted with id: " . $response->getProperty('id');

  } catch(FacebookRequestException $e) {

    echo "Exception occured, code: " . $e->getCode();
    echo " with message: " . $e->getMessage();

  }  

我收到错误

Exception occured, code: 100 with message: Invalid parameter

1 个答案:

答案 0 :(得分:2)

您可以在getLoginUrl()

中显式添加所请求权限的列表
$loginUrl = $helper->getLoginUrl(["public_profile", "publish_actions", ...]);

请注意,使用v2.0时,您需要先审核您的权限,然后才能通过您的应用提出申请:https://developers.facebook.com/docs/apps/changelog#v2_0_permissions