0

我的 PHP 系统中有这种情况:

  • 系统
  • 脸书应用
  • 第1页
  • 第2页
  • 页面X

和:

  • 第 1 页管理员用户
  • Page2 管理员用户
  • PageX 管理员用户

如果在系统中我使用 Page2 Admin User 登录,我需要使用相同的 FB App 在 Page2 和 PageX wall 中写入。我需要与 Page1 管理员用户相同,在 Page1 和 PageX 中编写。

每个用户只能管理他的页面。

我能怎么做?

谢谢!

编辑 1:当我尝试在非管理员用户的页面上发布时,应用程序返回此消息 (#1) 创建共享时发生错误

编辑2:

session_start();
$fb_data = array();
$app_id = 'XXXXXXXXXXXXXXXX';
$app_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
$return_uri = 'http://site.com/fb/';

$config = array();
$config['appId'] = 'XXXXXXXXXXXXXXXX';
$config['secret'] = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX';
$config['fileUpload'] = false;

include('facebook.php');

if(isset($_GET['code']))
{
    $fb_data['code'] = $_GET['code'];
    $_SESSION['HC-FB-CODE'] = serialize($fb_data);
    $access_token = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id='.$app_id.'&redirect_uri='.$return_uri.'&client_secret='.$app_secret.'&code='.$fb_data['code']);
    $access_token = str_replace('access_token=', '', $access_token);
    $fb_data['access_token'] = $access_token;
    $_SESSION['HC-FB-CODE'] = serialize($fb_data);
    $json = json_decode(file_get_contents('https://graph.facebook.com/me/accounts?access_token='.$fb_data['access_token']));

    foreach($json -> data as $key => $val)
    {
        if($val -> name == 'Page')
        {
            $page_token = $val -> access_token;
            $fb = new Facebook($config);
            $params = array(
                    "access_token" => $page_token,
                    "message" => "Test AUTOPOST[message]",
                    "link" => "http://www.site.com/",
                    "picture" => "http://www.site.com/img.png",
                    "name" => "Test AUTOPOST[name]",
                    "caption" => "Test AUTOPOST[caption]",
                    "description" => "Test AUTOPOST[description]"
            );

            try {
                $ret = $fb->api('/'.$val -> id.'/feed', 'POST', $params);
                echo 'Successfully posted to Facebook';
            } catch(Exception $e) {
                echo $e->getMessage();
            }
        }
    }
}
else if(isset($_GET['start']))
{
    header('Location: https://www.facebook.com/dialog/oauth?client_id='.$app_id.'&redirect_uri='.$return_uri.'&scope=manage_pages,publish_stream');
}

这是一个示例代码,仅供测试!并且要与非管理员用户一起使用,我在代码中设置了一个固定的页面 id,没有选择,当他们必须在自己的页面中发布时使用

4

0 回答 0