Как исправить "параметр fb_exchange_token не указан"? - PullRequest
0 голосов
/ 20 мая 2019

Я не могу найти никакой документации по этому вопросу.

Вот мой код:

Я использую Laravel 5.5 и таблицу Facbook. Я отправляю на страницу, но я получил эту ошибку fb_exchange_token параметр не указан, но я успешно вошел в систему.

Из-за некачественной документации я не могу найти ничего на fb_exchange_token ни на сайте Facebook, ни где-либо еще.

Может кто-нибудь помочь?

    {
        $facebook = Facebooks::findOrFail($id);
        $fb = new Facebook([
            'app_id' => 'my_id', // Replace {app-id} with your app id
            'app_secret' => 'my_secret',
            'default_graph_version' => 'v3.3',
          ]);

        $helper = $fb->getRedirectLoginHelper();

        $permissions = ['manage_pages', 'publish_pages']; // optional

        try {
            if (isset($_SESSION['facebook_access_token'])) {
                $accessToken = $_SESSION['facebook_access_token'];
            } else {
                  $accessToken = $helper->getAccessToken();
            }
        } catch(Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();

              exit;
        } catch(Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
            echo 'Facebook SDK returned an error: ' . $e->getMessage();
              exit;
         }


            if (isset($_SESSION['facebook_access_token'])) {
                $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
            } else {
                // getting short-lived access token
                $_SESSION['facebook_access_token'] = (string) $accessToken;

                  // OAuth 2.0 client handler
                $oAuth2Client = $fb->getOAuth2Client();

                // Exchanges a short-lived access token for a long-lived one
                $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);

                $_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;

                // setting default access token to be used in script
                $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
            }

            // redirect the user back to the same page if it has "code" GET variable
            if (isset($_GET['code'])) {
                header('Location: ./');
            }

            // getting basic info about user
            try {
                $profile_request = $fb->get('/me');
                $profile = $profile_request->getGraphNode()->asArray();
            } catch(Facebook\Exceptions\FacebookResponseException $e) {
                // When Graph returns an error
                echo 'Graph returned an error: ' . $e->getMessage();
                session_destroy();
                // redirecting user back to app login page
                header("Location: ./");
                exit;
            } catch(Facebook\Exceptions\FacebookSDKException $e) {
                // When validation fails or other local issues
                echo 'Facebook SDK returned an error: ' . $e->getMessage();
                exit;
            }
            // post on behalf of page
            $pages = $fb->get('/me/accounts');
            $pages = $pages->getGraphEdge()->asArray();

        foreach($pages as $key){
            if($key['name'] == 'CloudGuest Test'){
                if(isset($_POST['facebook_status'])){
                    $text1 = $_POST['facebook_status'];
                    $post = $fb->post('/' . $key['id'] . '/feed', array('message' =>$text1),$key['access_token']);
                    $post = $post->getGraphNode()->asArray();
                     print_r($post);
                }
            }
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...