Posting silang ke halaman Facebook menggunakan PHP SDK

Banyak situs yang mempublikasikan informasi tentang materi baru di jejaring sosial, ini bisa dilakukan untuk Facebook. Diasumsikan bahwa Anda telah membuat aplikasi dan menentukan host yang diizinkan untuk pengalihan OAuth di tab "Advanced" pada item menu "Settings". Jadi, kita memulai sesi dengan function session_start (), siapa pun yang membutuhkannya dapat mengaktifkan output kesalahan jika dinonaktifkan.

error_reporting(E_ALL); ini_set("display_errors", 1); 

Selanjutnya, unduh perpustakaan PHP SDK (yang ada di github) dan ekstrak folder src (yang dapat diubah namanya). Kemudian tentukan path ke autoloader.

 require_once __DIR__ . '/_src/autoload.php'; 

Sekarang buat instance dari kelas Facebook.

 $fb = new Facebook\Facebook([ 'app_id' => '1234567890123456', //   id  'app_secret' => '12345678901234567890123456789012' //   ]); 

Kami memanggil asisten untuk melakukan otorisasi, menentukan izin yang diperlukan untuk menerbitkan pada halaman.

 $helper = $fb->getRedirectLoginHelper(); //  publish_actions,     ,      $permissions = ['manage_pages','publish_pages']; $loginUrl = $helper->getLoginUrl('url____', $permissions); echo '<a href="' . htmlspecialchars($loginUrl) . '"></a>'; 

Setelah Anda akan diarahkan ke situs Facebook, di mana Anda harus masuk, maka Anda akan mengikuti tautan yang ditentukan dalam fungsi getLoginUrl (). Di sini, sekali lagi, Anda memanggil asisten dari siapa Anda mendapatkan pengguna access_token.

 $helper = $fb->getRedirectLoginHelper(); try { $accessToken = $helper->getAccessToken(); } catch(Facebook\Exceptions\FacebookResponseException $e) { echo 'Graph  : ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { echo 'Facebook SDK  : ' . $e->getMessage(); exit; } if (isset($accessToken)) $_SESSION['facebook_access_token'] = (string) $accessToken; elseif ($helper->getError()) exit; 

Jika Anda mencoba memposting ke halaman dengan token ini, kesalahan "Izin kesalahan" akan dikembalikan, karena ini memerlukan token halaman. Untuk mendapatkannya, Anda perlu memanggil fungsi get () dari objek Facebook dan meneruskan dua parameter ke sana: url permintaan token halaman yang berisi id halaman yang ingin Anda poskan dan sebelumnya pengguna access_token.

 try { $response = $fb->get('/id_?fields=access_token', $_SESSION['facebook_access_token']); } catch (Facebook\Exceptions\FacebookResponseException $e) { echo 'Graph  : ' . $e->getMessage(); exit; } catch (Facebook\Exceptions\FacebookSDKException $e) { echo 'Facebook SDK  : ' . $e->getMessage(); exit; } //  echo $response->getGraphNode()['access_token']; 

Token yang diterima akan memiliki durasi yang tidak terbatas. Informasi token tersedia melalui debugger . Sekarang Anda dapat mencoba memposting pesan.

 $str_page = '/1234567890123456/feed'; $feed = array('message' => ''); try { $response = $fb->post($str_page, $feed, 'access_token_'); } catch (Facebook\Exceptions\FacebookResponseException $e) { echo 'Graph  : ' . $e->getMessage(); exit; } catch (Facebook\Exceptions\FacebookSDKException $e) { echo 'Facebook SDK  : ' . $e->getMessage(); exit; } $graphNode = $response->getGraphNode(); echo ', id: ' . $graphNode['id']; 

Jika perlu, Anda dapat keluar dari Facebook.

 $helper = $fb->getRedirectLoginHelper(); $logoutUrl = $helper->getLogoutUrl($_SESSION['facebook_access_token'], 'url____'); echo '<a href="' . htmlspecialchars($logoutUrl) . '"></a>'; 

Source: https://habr.com/ru/post/id481482/


All Articles