经过5天的尝试和失败,我已经非常接近我想要做的了。
有一个例外。我当前的代码只工作一次。
这里是场景,
我正在尝试使用facebook sdk Add A Page Tab
到facebook页面。
我当前的代码以某种方式工作,但它只适用于在facebook中创建的第一个facebook页面,如果我尝试为其他页面添加页面选项卡,它将抛出以下错误:
(#200) User does not have sufficient administrative permission for this action on this page
我不明白为什么会这样。这个错误通常意味着我没有页面访问令牌,但如果是这种情况,我的代码不会/不应该为第一页工作,但它确实!
有没有可能有人可以看看我当前的代码,看看我做错了什么?
任何帮助都将是感激的。
我的当前代码如下:
这是获取访问令牌的部分,也是在表单提交之后:
// Set Extended Access Token
if (isset($code)) {
$fb->setExtendedAccessToken();
//Get access short live access token
$accessToken = $fb->getAccessToken();
// Exchange token
$fb->api('/oauth/access_token', 'POST',
array(
'grant_type' => 'fb_exchange_token',
'client_id' => $appId ,
'client_secret' => $secret,
'fb_exchange_token' => $accessToken
)
);
$token_url="https://graph.facebook.com/oauth/access_token?client_id=" . $appId
. "&client_secret=" . $secret
. "&code=" . $code
. "&redirect_uri=" . $returnurl;
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$user_access_token = $params['access_token'];
$attachment_1 = array(
'access_token' => $user_access_token
);
}
$result = $fb->api("/me/accounts", $attachment_1);
foreach($result["data"] as $page) {
if($page["page_id"] == $page_id) {
$page_access_token = $page["access_token"];
//echo $page_access_token;
break;
}
}
//$pageIds=$fb->api('/me/accounts');
//$pageAccessToken=$pageIds["data"][1]["access_token"];
if(isset($_POST['msg']) and $_POST['msg']!=''){
try{
$message = array(
'access_token' => $page_access_token,
'message' => $_POST['msg']
);
$posturl = '/'.$_POST['pageid'].'/feed';
$posturl2 = '/'.$_POST['pageid'].'/tabs';
$fb->api($posturl2, 'POST', array(
'app_id'=>'0000000000000000000000000',
'access_token'=>$page_access_token
));
$result = $fb->api($posturl,'POST', $message);
if($result){
echo 'Successfully posted to Facebook Wall...';
}
}catch(FacebookApiException $e){
echo $e->getMessage();
}
}
,这是我如何在我的页面内的表单中填充用户页面:
if(empty($pages)){
echo 'The user does not have any pages.';
}else{
echo '<form action="" method="post">';
echo 'Select Page: <select name="pageid">';
echo '<option value="">Select A Page</option>';
foreach($pages as $page){
echo '<option value="'.$page['page_id'].'">'.$page['name'].'</option>';
}
echo '</select>';
//echo 'Select Page: <select name="pageid2">';
// foreach($pageIds as $pageId){
// echo '<option value="'.$page['page_id'].'">'.$pageAccessToken.'</option>';
// }
//echo '</select>';
echo '<br />Message: <textarea name="msg"></textarea>';
echo '<br /><input type="submit" value="Post to wall" />';
echo '</form>';
}
}catch(FacebookApiException $e){
echo $e->getMessage();
}
我只是有相同的错误消息与实时API订阅。我认为这是同样的问题,你没有管理权限的页面。如果你是版主(例如),你仍然可以得到一个页面令牌,但某些事情是不可能的,如果你不是管理员(订阅实时API,添加一个选项卡)。