Graph returned an error: (#200) Permissions error
Graph returned an error: (#200) Permissions error
当我将 post 发布到我的页面时,它工作正常,但是当我 post 通过设置页面 ID 而不是 "me" 进行分页时,
响应如下:
图返回错误:(#200)权限错误
源码如下:
require_once 'src/Facebook/autoload.php';
//*
$config = array();
$config['appId'] = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_id'] = $config['appId'];
$config['secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_secret'] = $config['secret'];
define('APP_ID', $config['appId']);
define('APP_SECRET', $config['secret']);
//$config['fileUpload'] = false; // optional
$config['default_graph_version'] = 'v2.5';
$config['page_id'] = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$config['facebook']['permissions'] = array(
'email',
'user_location',
'user_birthday',
'publish_actions',
'publish_pages',
'manage_pages',
'public_profile',
);
$fb = new Facebook\Facebook($config);
if(isset($_SESSION['fb_access_token'])) {
$accessToken = $_SESSION['fb_access_token'];
} else {
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
if(isset($accessToken)) {
$oAuth2Client = $fb->getOAuth2Client();
// longlived access token
if (!$accessToken->isLongLived()) {
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
}
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
}
if(isset($accessToken)) {
// Logged in!
$_SESSION['fb_access_token'] = (string) $accessToken;
try {
$response = $fb->get('/'.$config['page_id'].'/feed', $accessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
//exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
//exit;
}
} else {
$helper = $fb->getRedirectLoginHelper();
$redirect_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$loginUrl = $helper->getLoginUrl($redirect_url, [ 'manage_pages', 'publish_pages', 'publish_actions' ]);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}
on other action in same page
$page_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// instance
$fb = new Facebook\Facebook([
'app_id' => APP_ID,
'app_secret' => APP_SECRET,
'default_graph_version' => 'v2.4',
]);
$linkData = [
'link' => encodeurl(array('page'=>'page','lang'=>'ar','id'=>$_id,'beg'=>0,'unuse'=>$xtitlex)),
'message' => $xtitlex,
'source' => $publish,//$fb->fileToUpload($publish),
'caption' => DOMAIN_,
"picture" => $publish,
"name" => $xtitlex,
"description" => $xdescriptionx
];
try {
//
$response = $fb->post('/'.$config['page_id'].'/feed', $linkData, $page_access_token);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
//print_r($linkData);
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
?>
很可能您没有使用具有正确权限的页面令牌。确保您使用的是页面令牌而不是用户令牌,并确保它包含 publish_pages
。您可以在调试器中测试您的令牌:https://developers.facebook.com/tools/debug/
确保显示页面 ID 和 publish_pages
权限。
我的应用类型是商业应用,我只是添加了给定列表中的所有权限,在我添加所有权限后,Facebook 要求我审查权限,我只是一直点击确定,一切正常,错误出现了
首先检查您使用的访问令牌是否生成为“页面访问令牌”而不是“用户令牌”。这有点棘手,花了我一点时间。
- 转到“https://developers.facebook.com/tools/explorer/”
- 下拉“用户令牌”菜单
- 选择“页面访问令牌”
- 蓝色按钮“生成访问令牌”
- 复制并使用新令牌
每次添加或删除权限时,令牌都会更改!
截图
当我将 post 发布到我的页面时,它工作正常,但是当我 post 通过设置页面 ID 而不是 "me" 进行分页时, 响应如下: 图返回错误:(#200)权限错误 源码如下:
require_once 'src/Facebook/autoload.php';
//*
$config = array();
$config['appId'] = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_id'] = $config['appId'];
$config['secret'] = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$config['app_secret'] = $config['secret'];
define('APP_ID', $config['appId']);
define('APP_SECRET', $config['secret']);
//$config['fileUpload'] = false; // optional
$config['default_graph_version'] = 'v2.5';
$config['page_id'] = 'xxxxxxxxxxxxxxxxxxxxxxxx';
$config['facebook']['permissions'] = array(
'email',
'user_location',
'user_birthday',
'publish_actions',
'publish_pages',
'manage_pages',
'public_profile',
);
$fb = new Facebook\Facebook($config);
if(isset($_SESSION['fb_access_token'])) {
$accessToken = $_SESSION['fb_access_token'];
} else {
$helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
if(isset($accessToken)) {
$oAuth2Client = $fb->getOAuth2Client();
// longlived access token
if (!$accessToken->isLongLived()) {
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
}
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
}
if(isset($accessToken)) {
// Logged in!
$_SESSION['fb_access_token'] = (string) $accessToken;
try {
$response = $fb->get('/'.$config['page_id'].'/feed', $accessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
//exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
//exit;
}
} else {
$helper = $fb->getRedirectLoginHelper();
$redirect_url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$loginUrl = $helper->getLoginUrl($redirect_url, [ 'manage_pages', 'publish_pages', 'publish_actions' ]);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}
on other action in same page
$page_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// instance
$fb = new Facebook\Facebook([
'app_id' => APP_ID,
'app_secret' => APP_SECRET,
'default_graph_version' => 'v2.4',
]);
$linkData = [
'link' => encodeurl(array('page'=>'page','lang'=>'ar','id'=>$_id,'beg'=>0,'unuse'=>$xtitlex)),
'message' => $xtitlex,
'source' => $publish,//$fb->fileToUpload($publish),
'caption' => DOMAIN_,
"picture" => $publish,
"name" => $xtitlex,
"description" => $xdescriptionx
];
try {
//
$response = $fb->post('/'.$config['page_id'].'/feed', $linkData, $page_access_token);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
//print_r($linkData);
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
?>
很可能您没有使用具有正确权限的页面令牌。确保您使用的是页面令牌而不是用户令牌,并确保它包含 publish_pages
。您可以在调试器中测试您的令牌:https://developers.facebook.com/tools/debug/
确保显示页面 ID 和 publish_pages
权限。
我的应用类型是商业应用,我只是添加了给定列表中的所有权限,在我添加所有权限后,Facebook 要求我审查权限,我只是一直点击确定,一切正常,错误出现了
首先检查您使用的访问令牌是否生成为“页面访问令牌”而不是“用户令牌”。这有点棘手,花了我一点时间。
- 转到“https://developers.facebook.com/tools/explorer/”
- 下拉“用户令牌”菜单
- 选择“页面访问令牌”
- 蓝色按钮“生成访问令牌”
- 复制并使用新令牌
每次添加或删除权限时,令牌都会更改!
截图