Facebook iFrame应用程序重定向

时间:2011-02-14 16:01:48

标签: php facebook-php-sdk facebook-opengraph http-redirect

我正在Facebook上编写一个应用程序,该应用程序通过我自己的业务页面上的页面选项卡显示。我需要与查看用户进行交互,因此我需要扩展权限。

我按照建议的程序,但现在已经碰到了墙。我的应用程序位于iFrame中,扩展权限请求使用重定向。我可以获得您需要确认授权的页面,但是当您点击允许时,Facebook会重定向到我的应用程序所在的页面,而不是返回到我的Facebook页面选项卡。一旦授权了适当的权限,应用程序的其余部分工作正常,所以我知道这只是一个重定向的问题,但我觉得我已经尝试了一切,并没有很多人似乎有同样的问题。如果有人能指出我正确的方向,我会很高兴。

谢谢!

这是我的代码:

$app_id = "myappid";

$canvas_page = "http://wheremyappishosted/";

$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

$user_id = $data["user_id"];
$access_token = $data['oauth_token'];

if (empty($data["user_id"])) {
 $auth_url = "https://graph.facebook.com/oauth/authorize?client_id=".$app_id."&redirect_uri=".urlencode($canvas_page)."&scope=user_photos,friends_photos,publish_stream,user_likes";
 die("<script> top.location.href='" . $auth_url . "'</script>");
}

$f = json_decode(file_get_contents("https://graph.facebook.com/".$user_id."?access_token=".$access_token."&fields=name,albums,likes"), true);

4 个答案:

答案 0 :(得分:4)

对于那些感兴趣的人,我相信我找到了一种方法来规避这一点。我将它们重定向到一个小脚本,然后重定向回页面选项卡,而不是将用户重定向回应用程序。由于应用程序已经过授权,因此一切正常,并且signed_request将与用户信息一起传递。我不知道它是否真的是合法的方式,但它有效。

答案 1 :(得分:0)

请将重定向变量设置为目标网页:

$redirect = "http://foo.com";

答案 2 :(得分:0)

将redirect_uri设置为“http [s]://apps.facebook.com/YOUR_APP/”而不是“http [s]://apps.facebook.com/YOUR_APP”。请注意尾部斜线!

答案 3 :(得分:0)

我已经发现使用javascript sdk是更好的选择,当使用服务器脚本出现未解决的重定向问题时,实现这个小测试,你会发现大多数事情都发生在使用灯箱,即你的应用上方。这使得应用页面保持不变。

https://developers.facebook.com/docs/facebook-login/getting-started-web/