SammyK laravel Facebook PHP SDK, размещение на странице - PullRequest
1 голос
/ 30 мая 2019

В настоящее время я использую 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>
...