В настоящее время я использую SammyK Laravel Facebook SDK, и у меня все работает, вплоть до входа в систему и продолжения от имени пользователя, а затем отображения данных страницы.
Я являюсь администратором двух страниц, и когда я нажимаю на ссылку для входа, он успешно отображает идентификатор и имя обеих страниц. Затем в своей форме я ввожу идентификатор страницы, для которой я хочу сделать сообщение, а также сообщение для публикации. Когда я отправляю, моя страница post.php загружается и показывает сообщение «Успех», но на моей странице не было ни одного сообщения. Я знаю, что все соответствующие данные есть, потому что я решил продолжить со мной и выбрать нужную страницу для ссылки в качестве приложения.
Что я здесь не так делаю?
Route::get('/facebook/login', function(SammyK\LaravelFacebookSdk\LaravelFacebookSdk $fb)
{
// Send an array of permissions to request
$login_url = $fb->getLoginUrl(['email', 'user_posts', 'manage_pages','publish_pages']);
// Obviously you'd do this in blade :)
echo '<a href="' . $login_url . '">Login with Facebook</a>';
});
// Endpoint that is redirected to after an authentication attempt
Route::get('/facebook/callback', function(SammyK\LaravelFacebookSdk\LaravelFacebookSdk $fb)
{
// Obtain an access token.
try {
$token = $fb->getAccessTokenFromRedirect();
} catch (Facebook\Exceptions\FacebookSDKException $e) {
dd($e->getMessage());
}
// Access token will be null if the user denied the request
// or if someone just hit this URL outside of the OAuth flow.
if (! $token) {
// Get the redirect helper
$helper = $fb->getRedirectLoginHelper();
if (! $helper->getError()) {
abort(403, 'Unauthorized action.');
}
// User denied the request
dd(
$helper->getError(),
$helper->getErrorCode(),
$helper->getErrorReason(),
$helper->getErrorDescription()
);
}
if (! $token->isLongLived()) {
// OAuth 2.0 client handler
$oauth_client = $fb->getOAuth2Client();
// Extend the access token.
try {
$token = $oauth_client->getLongLivedAccessToken($token);
} catch (Facebook\Exceptions\FacebookSDKException $e) {
dd($e->getMessage());
}
}
$fb->setDefaultAccessToken($token);
// Save for later
Session::put('fb_user_access_token', (string) $token);
// Get basic info on the user from Facebook.
try {
$response = $fb->get('/me/accounts');
$response = $response->getDecodedBody();
foreach($response['data'] as $page){
echo $page['id'] . "-" . $page['name'] . "<br>";
}
?>
<form method="post" action="post">
<input type="text" name="pageid" placeholder="Page ID">
<input type="text" name="message" placeholder="message">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="submit">
</form>
<?php
//dd($response);
} catch (Facebook\Exceptions\FacebookSDKException $e) {
dd($e->getMessage());
}
});
Route::post('/facebook/post', function () {
return view('/facebook/post');
});
post.php
<?php
if(isset($_SESSION['token'])){
$id = $_POST['pageid'];
$message = $_POST['message'];
$fb = app(SammyK\LaravelFacebookSdk\LaravelFacebookSdk::class);
$res = $fb->get('me/accounts', $_SESSION['token']);
$res = $res->getDecodedBody();
foreach($res['data'] as $page){
if($page['id'] == $id){
$accesstoken = $page['access_token'];
break;
}
}
$data = array('message' => $message);
$res = $fb->post($id . '/feed/', $data, $accesstoken);
}
?>
<h1>Success</h1>