使用 Facebook 的 Graph API,我已经成功地在用户离线时发布到用户的 feed,只有 publish_stream 权限。我不需要 offline_access 权限。我在这里解释了我是如何做到的:Facebook Stream Publish while offline
我在用户离线时发布到页面时不太成功。这是我的场景:
用户 U 是页面 P 的管理员。P 授权并安装了我的应用程序。 U 授权我的应用并授予我以下扩展权限:
- 发布流
- 管理页面
一旦用户离线,如果我尝试使用与发布到用户流(没有 offline_access 权限)相同的技术来发布到页面,我会收到“用户尚未授权应用程序执行此操作行动”。技巧如下:
1) 获取我应用的 access_token
2) 使用我的应用程序的 access_token 发布到页面 P 的提要: 发布 https://graph.facebook.com/ {page_id}/提要
如果我在第 2 步中使用 {user_id} 而不是 {page_id},那么它会毫无问题地发布到用户的供稿。但是,我想发布到页面的提要。是否有可能做到这一点?或者我是否需要用户的 offline_access 权限才能执行此操作?
谢谢, 强尼
最佳答案
完整流程 - 四页示例(示例更易于编辑和理解)
所以配置只有基本的应用信息...
当您加载 index.php
- 它重定向到 facebook 以获得页面授权..(可能已经有了这个..但涵盖了所有基础)
Facebook 然后重定向回 redirecturl (backfromfb.php
)...
Facebook 将访问 token 作为散列而不是 get 变量返回,因此此页面使用散列作为变量进行刷新...
然后它加载 PageUpdate.php
,它处理应用程序/管理 token 的循环并为您要发布到的页面找到正确的 token 。
然后它构建帖子并提交..
听起来您对其中的大部分内容都有所了解...因此希望这对您有所帮助。
config.php
<?php
$config = array(
'appId' => 'YOUR APP ID',
'secret' => 'YOUR APP SECRET',
'cookie' => true;
);
$baseurl = 'http://yoursite.com/';
$returnpage = 'backfromfb.php';
require_once('library/facebook.php');
?>
index.php
<?php require_once('config.php'); ?>
<html><head><title>Redirecting for auth</title></head><body><script type="text/javascript">
window.location.href = 'https://www.facebook.com/dialog/oauth?client_id=<?php echo $config['appId']; ?>&redirect_uri=<?php echo $baseurl . $returnpage; ?>&scope=manage_pages&response_type=token';
</script></body></html>
backfromfb.php
<?php
require_once('config.php');
// this page just passes the access token from the hash to a GET arg...
if (!isset($_GET['access_token'])) {
?>
<html><head><title>Redirecting</title></head><body><script type="text/javascript">
accessToken = window.location.hash.substring(1);
window.location.href = '<?php echo $baseurl . $returnpage; ?>?' + accessToken;
</script></body></html>
<?php
} else {
require_once('PageUpdate.php');
} ?>
PageUpdate.php
<?php
require_once('config.php');
$pageID = "123456 WHatever you page id is";
$AppToken = array(
'access_token' => $_REQUEST['acess_token']
);
$fb = new Facebook($config);
// Load APP page access rights for user via AppToken
$pageAdmin = $fb->api('/me/accounts', 'GET', $AppToken);
// Find the page access token
foreach ($pageAdmin['data'] as $data) {
if ($data['id'] == $pageID) {
$pageToken['access_token'] = $data['access_token'];
continue;
}
}
// compile the post
$WallPost = array(
'message' => 'Test post from my app!'
); // you can also use 'picture', 'link', 'name', 'caption', 'description', 'source'....
//http://developers.facebook.com/docs/reference/api/
// post to wall
$response = $fb->api($pageID . '/feed','POST',$WallPost);
if($response) {
echo 'Success!';
echo '<pre>' . $response . '</pre>';
} else echo "failed";
?>
关于 Facebook API : How to publish to Page feed while user is offline without offline_access permission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5209233/