我创建了一个简单的画布应用程序。我已在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
答案 0 :(得分:2)
您可以在getLoginUrl()
$loginUrl = $helper->getLoginUrl(["public_profile", "publish_actions", ...]);
见
请注意,使用v2.0时,您需要先审核您的权限,然后才能通过您的应用提出申请:https://developers.facebook.com/docs/apps/changelog#v2_0_permissions