我有一个网站,我需要它不时将状态更新发布到Facebook页面。
使用我个人的Facebook帐户,我创建了一个应用程序和一个页面。到目前为止,我已经能够以编程方式发布到我的Page's Wall,将此代码添加到我的网站:
<?php
session_start();
require 'src/config.php';
require 'src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => $config['App_ID'],
'secret' => $config['App_Secret'],
'cookie' => true
));
if(isset($_POST['status']))
{
$page = split("-",$_POST['page']);
$page_token = $page[0];
$page_id= $page[1];
// status with link
$publish = $facebook->api('/'.$page_id.'/feed', 'post',
array('access_token' => $page_token,
'message'=> $_POST['status'],
'from' => $config['App_ID'],
'to' => $page_id,
'caption' => 'Caption',
'name' => 'Name',
'link' => 'http://www.example.com/',
'picture' => 'http://www.phpgang.com/wp-content/themes/PHPGang_v2/img/logo.png',
'description' => $_POST['status'].' via demo.PHPGang.com'
));
//Simple status without link
//$publish = $facebook->api('/'.$page_id.'/feed', 'post',
// array('access_token' => $page_token,'message'=>$_POST['status'] .' via PHPGang.com Demo',
// 'from' => $config['App_ID']
// ));
echo 'Status updated.<br>';
$graph_url_pages = "https://graph.facebook.com/me/accounts?access_token=".$_SESSION['token'];
$pages = json_decode(file_get_contents($graph_url_pages)); // get all pages information from above url.
$dropdown = "";
for($i=0;$i<count($pages->data);$i++)
{
$dropdown .= "<option value='".$pages->data[$i]->access_token."-".$pages->data[$i]->id."'>".$pages->data[$i]->name."</option>";
}
echo '
<style>
#status
{
width: 357px;
height: 28px;
font-size: 15px;
}
</style>
'.$message.'
<form action="index.php" method="post">
Select Page on which you want to post status: <br><select name="page" id=status>'.$dropdown.'</select><br><br>
<input type="text" name="status" id="status" placeholder="Write a comment...." /><input type="submit" value="Post On My Page!" style="padding: 5px;" />
<form>';
}
elseif(isset($_GET['fbTrue']))
{
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=".$config['App_ID']."&redirect_uri=" . urlencode($config['callback_url'])
. "&client_secret=".$config['App_Secret']."&code=" . $_GET['code'];
$response = file_get_contents($token_url); // get access token from url
$params = null;
parse_str($response, $params);
$_SESSION['token'] = $params['access_token'];
$graph_url_pages = "https://graph.facebook.com/me/accounts?access_token=".$_SESSION['token'];
$pages = json_decode(file_get_contents($graph_url_pages)); // get all pages information from above url.
$dropdown = "";
for($i=0;$i<count($pages->data);$i++)
{
$dropdown .= "<option value='".$pages->data[$i]->access_token."-".$pages->data[$i]->id."'>".$pages->data[$i]->name."</option>";
}
echo '
<style>
#status
{
width: 357px;
height: 28px;
font-size: 15px;
}
</style>
'.$message.'
<form action="index.php" method="post">
Select Page on which you want to post status: <br><select name="page" id=status>'.$dropdown.'</select><br><br>
<input type="text" name="status" id="status" placeholder="Write a comment...." /><input type="submit" value="Post On My Page!" style="padding: 5px;" />
<form>';
}
else
{
echo 'Connect <a href="https://www.facebook.com/dialog/oauth?client_id='.$config['App_ID'].'&redirect_uri='.$config['callback_url'].'&scope=publish_pages,manage_pages"><img src="./images/login-button.png" alt="Sign in with Facebook"/></a>';
}
所以我打开我的网站,点击“请登录”,以我自己的身份登录。一旦我记录下来,它现在就可以将状态更新发布到Facebook页面。
显然,这里的问题是我需要登录才能发帖。如果其他用户尝试使用他们的用户帐户登录,我的网站无法将状态更新发布到Facebook页面,因为我是该应用程序/页面的唯一管理员。
我的问题是,有没有办法让我以编程方式将自己登录到Facebook,以便我可以自动对页面进行这些状态更新?
很抱歉,这里的总菜刀是Facebook开发的。
我收到了有关Stackoverflow here的帖子。与我的问题有同样的问题。但他们使用“OFFLINE_ACCESS”权限使访问令牌终身生效。但Facebook删除了此功能here。那我现在该怎么办呢?
答案 0 :(得分:2)
这就是你需要的:
publish_pages
和manage_pages
/me/accounts
获取您管理的所有页面的列表,其中包括每页的扩展页面标记有关访问令牌以及如何获取它们的更多信息