您如何在 facebook 页面上发布到墙上(不是个人资料)
Posted
技术标签:
【中文标题】您如何在 facebook 页面上发布到墙上(不是个人资料)【英文标题】:How do you post to the wall on a facebook page (not profile) 【发布时间】:2010-10-16 00:57:55 【问题描述】:我有一个用 php 编写的博客站点,它将新的博客帖子发布到 twitter,并使用使用 php curl 传递的简单 http 帖子请求在后台自动发送博客 ping。
我有一个博客网站的 Facebook 页面,并希望将更新发布到页面上的墙上,有没有简单的方法可以做到这一点?
我真正想要的是一个 url 和一组参数来打包为一个 http post 请求。
请注意,这是在新样式页面上发布到墙上,而不是个人资料。
提前致谢。
【问题讨论】:
您是否在wiki.developers.facebook.com/index.php/Main_Page 或他们的开发者网站developers.facebook.com/?ref=pf 的其他地方尝试过Facebook 开发者Wiki? 我不喜欢 facebook 开发,但我认为你必须先编写一个 fb 应用程序才能获得授权。 【参考方案1】:您可以通过选择HTTP方法并设置可选参数来进行api调用:
$facebook->api('/me/feed/', 'post', array(
'message' => 'I want to display this message on my wall'
));
提交帖子到 Facebook 墙:
包含 fbConfig.php 文件以连接 Facebook API 并获取 访问令牌。
发布消息、姓名、链接、描述,图片将提交到 Facebook 墙。 将显示帖子提交状态。
如果 FB 访问令牌 ($accessToken) 不可用,则 Facebook 登录 将生成 URL,并将用户重定向到 FB 登录 页面。
Post to facebook wall php sdk
<?php
//Include FB config file
require_once 'fbConfig.php';
if(isset($accessToken))
if(isset($_SESSION['facebook_access_token']))
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
else
// Put short-lived access token in session
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler helps to manage access tokens
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// Set default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
//FB post content
$message = 'Test message from CodexWorld.com website';
$title = 'Post From Website';
$link = 'http://www.codexworld.com/';
$description = 'CodexWorld is a programming blog.';
$picture = 'http://www.codexworld.com/wp-content/uploads/2015/12/www-codexworld-com-programming-blog.png';
$attachment = array(
'message' => $message,
'name' => $title,
'link' => $link,
'description' => $description,
'picture'=>$picture,
);
try
//Post to Facebook
$fb->post('/me/feed', $attachment, $accessToken);
//Display post submission status
echo 'The post was submitted successfully to Facebook timeline.';
catch(FacebookResponseException $e)
echo 'Graph returned an error: ' . $e->getMessage();
exit;
catch(FacebookSDKException $e)
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
else
//Get FB login URL
$fbLoginURL = $helper->getLoginUrl($redirectURL, $fbPermissions);
//Redirect to FB login
header("Location:".$fbLoginURL);
参考:
https://github.com/facebookarchive/facebook-php-sdk
https://developers.facebook.com/docs/pages/publishing/
https://developers.facebook.com/docs/php/gettingstarted
http://www.pontikis.net/blog/auto_post_on_facebook_with_php
https://www.codexworld.com/post-to-facebook-wall-from-website-php-sdk/
【讨论】:
谢谢。你试过代码吗? 自定义链接预览片段现已过时,因此代码不会发布到页面 (developers.facebook.com/blog/post/2017/06/27/…)【参考方案2】:如果您的博客输出 RSS 提要,您可以使用 Facebook 的“RSS Graffiti”应用程序将该提要发布到 Facebook 的墙上。还有其他 RSS Facebook 应用程序;只需搜索“Facebook 的 RSS 应用程序”...
【讨论】:
【参考方案3】:这对我有用:
try
$statusUpdate = $facebook->api('/me/feed', 'post',
array('name'=>'My APP on Facebook','message'=> 'I am here working',
'privacy'=> array('value'=>'CUSTOM','friends'=>'SELF'),
'description'=>'testing my description',
'picture'=>'https://fbcdn-photos-a.akamaihd.net/mypicture.gif',
'caption'=>'apps.facebook.com/myapp','link'=>'http://apps.facebook.com/myapp'));
catch (FacebookApiException $e)
d($e);
【讨论】:
我遇到了 OAuth 问题,错误 200。我的 APP 要求使用 manage_pages、publish_actions、publish_stream... 有什么想法吗?【参考方案4】:从github 获取 PHP SDK 并运行以下代码:
<?php
$attachment = array(
'message' => 'this is my message',
'name' => 'This is my demo Facebook application!',
'caption' => "Caption of the Post",
'link' => 'http://mylink.com',
'description' => 'this is a description',
'picture' => 'http://mysite.com/pic.gif',
'actions' => array(
array(
'name' => 'Get Search',
'link' => 'http://www.google.com'
)
)
);
$result = $facebook->api('/me/feed/', 'post', $attachment);
上面的代码会将消息发布到您的墙上...如果您想发布到您的朋友或其他人的墙上,请将me
替换为该用户的 Facebook 用户 ID..有关更多信息,请查看API 文档。
【讨论】:
该代码效果很好!但在帖子中没有图片。我在这里错过了什么?谢谢! @Diego 检查图片 URL。在上面的示例中,它是 mysite.com/pic.gif。因此它将获取给定网址中的图片。所以尝试设置它。请务必检查 fb 文档以了解参数的任何更改,因为我上次在 FB 前台工作是 2010 年 8 月.. $facebook 是 php 安装中内置的变量吗?如果没有,$facebook 实例是如何创建的? @sadmicrowave 变量 $facebook 是 Facebook 类的对象(可能已经更改了类名,所以请在了解后阅读文档)。您需要通过以下代码实例化对象 "$facebook = new Facebook(array( 'appId' => APPID, 'secret' => SECRETKEY, 'cookie' => true ));" 您还需要在您的应用中安装 PHP SDK 才能访问 Facebook 类【参考方案5】:Harish 在这里有答案 - 除非您需要在验证时请求 manage_pages
权限,然后在发布时使用 page-id
而不是 me
....
$result = $facebook->api('page-id/feed/','post',$attachment);
【讨论】:
但您必须需要页面访问令牌才能作为页面发布【参考方案6】:如 Frank 所指出的,如果不创建应用程序并使用模板提要发布者,您将无法自动发布到 Facebook 墙上。
您唯一能做的就是使用他们提供的“共享”小部件,这需要用户交互。
【讨论】:
以上是关于您如何在 facebook 页面上发布到墙上(不是个人资料)的主要内容,如果未能解决你的问题,请参考以下文章
哪些 Facebook 权限允许发布到页面墙(不是个人资料墙)?
如何为页面创建 facebook 事件而不将其发布到页面墙上?
如何通过 Facebook Connect 在 Facebook 墙上分享分数?