Facebook API : How to publish to Page feed while user is offline without offline_access permission

标签 facebook facebook-graph-api

使用 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/

相关文章:

android - Facebook SDK 3.0 回调触发两次

html - 我不敢相信我正在使用框架 (facebook)

javascript - 是否可以通过 API 为特定页面添加 Facebook 评论,以避免使用评论插件?

facebook-graph-api - OpenGraph API 测试版 : publish_action vs publish_stream

ios - 返回 Facebook 个人资料图片

android - 如何使用 Android Facebook sdk 从 Facebook 获取好友列表?

android - 如何解决导致版本更新的 Facebook Audience 网络错误?

javascript - facebook - 通过 ajax 点赞帖子

ios - 是否可以在不显示 UIActivityViewController 对话框且不需要 Facebook SDK 的情况下通过 FB Messenger 从 iOS 应用程序共享 url 链接?

python - 如何使用 Graph API 获取 Facebook 群组发布的所有内容