facebook发布行动但没有重定向

时间:2012-08-28 12:29:26

标签: facebook facebook-graph-api facebook-social-plugins

我网站上的操作流程为:

  • 用户在任何网站上找到他们想要的内容
  • 他们点击浏览器按钮,打开包含我网站内容的iframe,并允许用户将他们正在查看的项目添加到列表中
  • (此时我的系统负责向db添加详细信息)
  • 然后用户点击关闭iframe并继续执行他们的工作

当用户选择添加我想要将该操作发布到Facebook时间线

的内容时

我使用下面的代码,它可以正常工作,但是,一旦完成任务,它就会重定向到一个预定的URL - 名为$ my_url

问题是我希望此操作发布无缝发生,因为我的用户已打开iframe弹出窗口,此时“ * 已成功添加到您的列表中”

那么我可以阻止它重定向并使其成为后台操作吗?我无法重定向到用户已经在查看的内容,这是一个想法,因为您必须拥有fb应用内的网址

这是我正在使用的代码

$app_id = "_APP_ID_";
$app_secret = "_SECRET";
$my_url = "http://*******.com/pages/add.html";
$og_url = "http://*******.com/pages/view?id=$new_id";

$code = $_REQUEST["code"];

if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) 
. &scope=email,user_birthday,friends_birthday,user_likes,friends_likes,publish_stream";

echo("<script>top.location.href='" . $dialog_url . "'</script>");
                }

$token_url="https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;

$access_token = file_get_contents($token_url);

// remove the @expires
$params = null;
parse_str($access_token, $params);
$access_token_updated = $params['access_token'];

$post_data = "wish=" . $og_url . "&access_token=" . $access_token_updated;

// setup the curl
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/me/*******:add');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

// execute the curl
$result = curl_exec ($ch);
if(curl_error($ch))
{
//echo 'error:' . curl_error($ch) . "<br/>";
}
curl_close ($ch);

还有另外一种解决方法吗?

1 个答案:

答案 0 :(得分:0)

这就是我做的......

更改OP中的所有代码并替换为此以及所有ok:

include 'path_to/facebook.php';

$facebook = new Facebook(array(
'appId'=>'__APPID__',
'secret'=>'__SECRET__',
'cookie'=>true
));

if(!$facebook->getUser())
{
$url = $facebook->getLoginUrl(array('scope'=>'email,publish_actions'));
echo "<script> top.location=\"".$url."\"; </script>";
exit(0);
}

$params = array("OBJECT_NAME"=>"http://*****.com/view?id=$new_id","access_token"=>$facebook->getAccessToken());

$out = $facebook->api('/me/NAMESPACE:ACTION_NAME','post',$params);