tic*_*tac 16 php post facebook facebook-graph-api
我使用Facebook PHP SDK 3.0.1(目前最新).我需要做的是在页面上发布页面的标识.
我尝试将access_token替换为我从页面获取的access_token(/ me/accounts),但现在说令牌由于某种原因无效.Facebook"冒充"页面现在处于离线状态,我没有在API中看到任何关于做我想做的事情的信息......也许我迷路了或者没有找到正确的方向..
这是我修改并用于存档的example.php:
require '../src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
));
// Get User ID
$user = $facebook->getUser();
//Lists all the applications and pages
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$accounts_list = $facebook->api('/me/accounts');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
$page_selected = 'xxxxxxxxxxxx';
$page_access_token = $accounts_list['data']['0']['access_token'];
echo 'page_access_token:' . $page_access_token;
<?php
if (isset($_GET['publish'])){
try {
$publishStream = $facebook->api("/$page_selected/feed", 'post', array(
'access_token' => '$page_access_token',
'message' => 'Development Test message',
'link' => 'http://xxxxxxx.com',
'picture' => 'http://xxxxxx/xxxx_logo.gif',
'name' => 'xxxxxxxx Goes Here',
'description'=> 'And the exciting description here!'
)
);
//as $_GET['publish'] is set so remove it by redirecting user to the base url
} catch (FacebookApiException $e) {
echo($e);
echo $publishStream;
echo 'catch goes here';
}
}
?>
Run Code Online (Sandbox Code Playgroud)
由于我无法回答我自己的问题,因此我编辑了这个问题.
经历了整个API ..
在作为页面发布之前,您需要将access_token设置为一个页面拥有.
$facebook->setAccessToken($page_access_token);
Run Code Online (Sandbox Code Playgroud)
就是这样,之后一切都按照通常的预期进行,无需修改帖子功能并添加"access_token"选项进行发布.
1.首先您必须获取页面访问令牌。
public function getPageToken()
{
$page_id = "xxxxxxxxxx";
$page_access_token = "";
$result = $this->facebook->api("/me/accounts");
if( !empty($result['data']) )
{
foreach($result["data"] as $page)
{
if($page["id"] == $page_id)
{
$page_access_token = $page["access_token"];
break;
}
}
}
else
{
$url = "https://www.facebook.com/dialog/oauth?client_id=xxxxxxxxxx&redirect_uri=http://apps.facebook.com/xxxxxx&scope=manage_pages&response_type=token";
echo "<script type='text/javascript'> top.location.href='".$url."'; </script>";
}
return $page_access_token;
}
Run Code Online (Sandbox Code Playgroud)
2.获取页面访问令牌后,只需将该令牌包含在您的发布到墙代码中即可。
<script src="//connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
var token = '<?php echo $page_access_token ?>';
var wallPost = {
access_token: token,
message : 'xxxxxxxx',
link : 'http://apps.facebook.com/xxxxxxx/',
picture : 'xxxxxxxx',
name : 'xxxxx',
caption : 'xxxxxx',
description : 'xxxxxxx',
};
FB.api('/pageid/feed', 'post', wallPost, function(response) {
if (!response || response.error) {
} else {
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
3.请记住,此代码只会在粉丝页面的墙上发布您的帖子,喜欢该粉丝页面的用户将能够看到该帖子,因为该帖子发布在自己的提要上。
希望这能解决您的问题。
| 归档时间: |
|
| 查看次数: |
3485 次 |
| 最近记录: |