如何使用app id自动提交到Facebook页面

时间:2015-04-19 10:53:54

标签: facebook

如何使用App ID发布到Facebook页面&秘密&页面ID无需登录页面的用户管理员获取访问令牌,作为页面管理员的App所有者不应该自动发布!?

我正在使用PHP& Facebook API的SDK4。

2 个答案:

答案 0 :(得分:0)

如果没有授权,您无法在Facebook上发布任何内容。如果您要发布“as Page”,则需要使用“publish_pages”权限授权Page admin,并使用页面令牌。您无法在未经授权的情况下获得用户或页面令牌,当然您也无法自动执行授权过程。查看文档以获取详细信息:https://developers.facebook.com/docs/graph-api/reference/v2.3/page/feed#publish

您还需要了解访问令牌:

答案 1 :(得分:0)

事实上我只想拥有永久页面访问令牌,这样我就可以永久自动发布,而无需每次发布时都要求用户进行身份验证。

按照以下步骤获取:Permanent Access Token

然后使用自动发布代码:

session_start();
define('FACEBOOK_SDK_V4_SRC_DIR', 'facebook-php-sdk-v4-4.0-dev/src/Facebook/');
require __DIR__ . '/facebook-php-sdk-v4-4.0-dev/autoload.php';

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\GraphUser;
use Facebook\FacebookRequestException;
use Facebook\FacebookRedirectLoginHelper;

// Facebook App
$api_key    = 'xxxxxxxxxxxxxxxx'; //App ID
$api_secret = 'xxxxxxxxxxxxxxxx'; //App Secret
$page_id    = 'xxxxxxxxxxxxxxxx'; //Page ID
$page_token = 'from the steps in the url';  
$fb_post    = array(
                'message'=> 'test message',
                'name'=>    '',
                'link'=>    'http://www.example.com/',
                'picture'=> 'http://www.example.com/image.jpg',
                'caption'=> '',
    );

// start a session for this App
FacebookSession::setDefaultApplication($api_key, $api_secret);

try {
  $session = new FacebookSession($page_token);
} catch(FacebookRequestException $e) {
    die(" Error : " . $e->getMessage());
} catch(\Exception $e) {
    die(" Error : " . $e->getMessage());
}

try {
// Auto posting
    $page_post = (new FacebookRequest( $session, 'POST', '/'. $page_id .'/feed', $fb_post))->execute()->getGraphObject()->asArray();
// return post_id, optional
    print_r( $page_post );
} catch (FacebookRequestException $e) {
  // The Graph API returned an error
    echo '<b style="color:blue;">'.$e->getMessage().'</b>';
} catch (\Exception $e) {
  // Some other error occurred
    echo '<b style="color:red;">'.$e->getMessage().'</b>';
}