我不明白为什么这是在我的网站和facebook之间的一个持续的正向循环中运行的,永远不会在最后一步结束(即将状态发布到墙上)。
require 'facebook.php';
//Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXX',
));
$user = $facebook->getUser();
根据用户是否登录,我们可能有也可能没有这些数据。
如果我们在这里有$user-id,则意味着我们知道该用户已登录Facebook,但我们不知道访问令牌是否有效。访问如果用户从Facebook注销,则令牌无效。
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if ($user) {
$logoutUrl = $facebook->getLogoutUrl();
} else {
$loginUrl = $facebook->getLoginUrl();
}
因此,这是我发现的两种不同解决方案的一个相当肮脏的混合体。实际上,如果我在一个单独的文档上执行权限,然后在没有if语句的情况下加载下一篇文章,这是没有问题的。所以我知道我正确地连接到了facebook。。。。
if ($user):
if(array_key_exists('publish_stream', $permissions['data'][0]) ) {
// Permission is granted!
// Do the related task
$post_id = $facebook->api('/me/feed', 'post', array('message'=>'Testing testing 123!'));
echo "<br><br><br><h1> POSTED STATUS TO WALL!</h1>";
} else {
// We don't have the permission
// Alert the user or ask for the permission!
echo "Click Below to Enter!";
header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
}
这里的问题是,它一次又一次地运行发布流权限(头部向前,重定向次数过多),并且从未捕获if语句以实际发布到墙上?我就是看不出我在这里做错了什么。非常感谢您的帮助。感谢
您缺少的关键行是
$permissions = $facebook->api("/me/permissions");
这将从facebook获得当前用户的权限,您需要在array_key_exists之前获得该权限。