我无法使用开放图授权发布到访问者的Facebook墙,似乎无法弄清楚我错在哪里。我正在使用Github的PHP / SDK库。这是我的代码:
<?php
require_once('facebook.php');
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
'cookie' => true,
));
$session = $facebook->getSession();
$me = null;
//session-based api call
if ($session) {
try {
$uid = $facebook->getUser();
$me = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
}
}
//post to wall/stream function
if(isset($_POST['status'])) {
try {
$result = $facebook->api(
'/me/feed',
'post',
array(
'access_token' => 'ACCESS_TOKEN',
'message' => $_POST['status']
)
);
} catch (FacebookApiException $e) {
echo 'Error: ' . print_r($e, true);
}
}
?>
<!-- HTML Form -->
<form name="" action="index.php" method="post">
<input type="text" name="status" id="status" value="">
<input type="submit" value="submit">
</form>
我不知道发生了什么,我已经梳理了十亿个教程,帖子,交流等等,似乎我做的一切都是正确的。任何帮助将不胜感激。
答案 0 :(得分:1)
在这里,您实际上没有检查用户是否在发布之前登录,我无法看到您要求用户登录的位置。这是一个更好的方法:
<?php
require_once('facebook.php');
$facebook = new Facebook(array(
'appId' => 'APP_ID',
'secret' => 'APP_SECRET',
'cookie' => true,
));
$session = $facebook->getSession();
if($session) {
//post to wall/stream function
if(isset($_POST['status'])) {
try {
$result = $facebook->api(
'/me/feed',
'post',
array(
'message' => $_POST['status']
)
);
} catch (FacebookApiException $e) {
echo 'Error: ' . print_r($e, true);
}
}
} else {
$loginUrl = $facebook->getLoginUrl(array(
'req_perms' => 'publish_stream'
));
header("Location: $loginUrl");
}
?>
<!-- HTML Form -->
<form name="" action="index.php" method="post">
<input type="text" name="status" id="status" value="">
<input type="submit" value="submit">
</form>
答案 1 :(得分:0)
使用您编写的代码,假设您使用Javascript SDK生成facebook cookie,这是$facebook->getSession()
调用用于登录用户的内容:您是否拥有Javascript SDK?设置正确吗?
此外,您假设您使用的任何应用都已获得相应的权限发布到用户的墙上。有关所需权限的详细信息,请参阅http://developers.facebook.com/docs/authentication/permissions/。您是否从用户那里获得了所请求的许可?