Я хочу опубликовать сообщение в стене страницы Facebook. Я администратор приложения и страницы, используемые в этом коде, я уже дал разрешения, необходимые для моего приложения, чтобы иметь возможность отправлять сообщения на моей странице, он работает, когда я использую только поле «сообщение», например:
$message = array( 'message' => "Test2",<br> ); $result = $fb->api('/411895472189524/feed','POST',$message);
Код выше сообщений на мою стену страницы и пост сделан «из» самой страницы, так же, как если бы я сделал это вручную из facebook. Это отлично работает.
Но когда я пытаюсь добавить больше полей, таких как «ссылка» или «картинка» или «описание», сообщение отправляется в «Последние сообщения от других на странице TEST Jojo», и сообщение теперь делается из моей личной учетной записи (Joelle Landrie) из самой страницы. См. Код ниже.
$message = array( 'message' => "Test2", 'picture' => "http://img.ruphp.com/php/245431315.jpg", 'description' => "This is a test description", 'link' => "google.com" ); $result = $fb->api('/411895472189524/feed','POST',$message);
См .: https://www.facebook.com/pages/TEST-Jojo-Page/411895472189524
Поле link
кажется, вызывает проблемы, я могу получить успешную запись на своей странице, используя поле message
, picture
и description
. Только это бесполезно для меня, мне нужно, чтобы мой пост имел ссылку.
Спасибо Shadowfax, который спросил, использую ли я «page_access_token». Я не был. Я начал искать в Интернете, как получить этот токен, добавил его в свой код, и теперь он отлично работает!
$appId = 'YOUR APP ID'; $secret = 'YOUR SECRET'; $returnurl = 'http://www.yoursite.com'; $permissions = 'manage_pages, publish_stream, offline_access'; $fb = new Facebook(array('appId'=>$appId, 'secret'=>$secret)); $fbuser = $fb->getUser(); if($fbuser){ $page_id = "YOUR PAGE ID"; $page_access_token = ""; $result = $fb->api("/me/accounts"); // loop trough all your pages and find the right one if( !empty($result['data']) ) { foreach($result["data"] as $page) { if($page["id"] == $page_id) { $page_access_token = $page["access_token"]; break; } } } else { echo "AN ERROR OCCURED: could not get the access_token. Please verify the page ID ".$page_id." exists."; } // set the facebook active facebook access token as the one we just fetch $fb->setAccessToken($page_access_token); // Now try to post on page's wall try{ $message = array( 'message' => "YOUR MESSAGE", 'picture' => "YOUR PICTURE", 'description' => "YOUR DESCRIPTION", 'link' => "YOUR LINK" ); $result = $fb->api('/'.$page_id.'/feed','POST',$message); if($result){ echo 'Successfully posted to Facebook Wall...'; } }catch(FacebookApiException $e){ echo $e->getMessage(); } }else{ $fbloginurl = $fb->getLoginUrl(array('redirect-uri'=>$returnurl, 'scope'=>$permissions)); echo '<a href="'.$fbloginurl.'">Login with Facebook</a>'; }
Просто отправьте ответ в качестве ответа.
При публикации в качестве страницы вам необходимо получить разрешение manage_pages
, а затем получить доступ к странице access_token
помощью /me/accounts
API и использовать этот токен для вызова /{page_id}/feed
POST.
Пламя, оригинальный плакат, сумел сделать это и опубликовал свое решение, отредактированное в самом вопросе. Я просто вставляю его здесь и делаю его Community Wiki
$appId = 'YOUR APP ID'; $secret = 'YOUR SECRET'; $returnurl = 'http://www.yoursite.com'; $permissions = 'manage_pages, publish_stream, offline_access'; $fb = new Facebook(array('appId'=>$appId, 'secret'=>$secret)); $fbuser = $fb->getUser(); if($fbuser){ $page_id = "YOUR PAGE ID"; $page_access_token = ""; $result = $fb->api("/me/accounts"); // loop trough all your pages and find the right one if( !empty($result['data']) ) { foreach($result["data"] as $page) { if($page["id"] == $page_id) { $page_access_token = $page["access_token"]; break; } } } else { echo "AN ERROR OCCURED: could not get the access_token. Please verify the page ID ".$page_id." exists."; } // set the facebook active facebook access token as the one we just fetch $fb->setAccessToken($page_access_token); // Now try to post on page's wall try{ $message = array( 'message' => "YOUR MESSAGE", 'picture' => "YOUR PICTURE", 'description' => "YOUR DESCRIPTION", 'link' => "YOUR LINK" ); $result = $fb->api('/'.$page_id.'/feed','POST',$message); if($result){ echo 'Successfully posted to Facebook Wall...'; } }catch(FacebookApiException $e){ echo $e->getMessage(); } }else{ $fbloginurl = $fb->getLoginUrl(array('redirect-uri'=>$returnurl, 'scope'=>$permissions)); echo '<a href="'.$fbloginurl.'">Login with Facebook</a>'; }