【发布时间】:2023-03-06 15:04:01
【问题描述】:
是否可以作为应用程序而不是用户在 Facebook 墙上发帖?据我了解,应用程序不是 Facebook 的有效用户,但有很多关于以 Page 而非 User 或 Application 发布的 cmets。
我如何使用 PHP Facebook API 来做到这一点?
【问题讨论】:
标签: php facebook facebook-graph-api
是否可以作为应用程序而不是用户在 Facebook 墙上发帖?据我了解,应用程序不是 Facebook 的有效用户,但有很多关于以 Page 而非 User 或 Application 发布的 cmets。
我如何使用 PHP Facebook API 来做到这一点?
【问题讨论】:
标签: php facebook facebook-graph-api
您需要publish_stream,manage_pages 权限。代码类似于:
<?php
// This code is just a snippet of the example.php script
// from the PHP-SDK <https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php>
require '../src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'app_id',
'secret' => 'app_secret',
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$page_id = 'page_id';
$page_info = $facebook->api("/$page_id?fields=access_token");
if( !empty($page_info['access_token']) ) {
$args = array(
'access_token' => $page_info['access_token'],
'message' => "I'm a Page!"
);
$post_id = $facebook->api("/$page_id/feed","post",$args);
} else {
$permissions = $facebook->api("/me/permissions");
if( !array_key_exists('publish_stream', $permissions['data'][0]) ||
!array_key_exists('manage_pages', $permissions['data'][0])) {
// We don't have one of the permissions
// Alert the admin or ask for the permission!
header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream, manage_pages")) );
}
}
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Login or logout url will be needed depending on current user state.
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream'));
}
// ... rest of your code
?>
我已经为此编写了深入的教程:How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK
【讨论】:
/me/accounts在这里你需要页面的管理员,这样你就可以从他的accounts获得页面access_token来使用它。
offline_access 权限!
access_token 在他发布之前获取页面的一个。
您必须首先让用户通过 facebook connect 进行授权,并在此请求中请求 manage_pages 权限。您可以使用此权限来获取相关页面的令牌和机密。然后,您使用这些来授权请求,而不是您为用户收到的令牌/秘密。
查看此页面的“页面登录”部分以获取更多信息: http://developers.facebook.com/docs/authentication/
【讨论】: