我刚刚创建了一个Facebook应用程序,这是我第一次尝试,而作为说明我在这个奇怪的情况stucked完成一切:无法重定向程序返回到其Facebook页面标签
当用户允许认证通过后应用程序会将我的浏览器重定向到Facebook以外的浏览器,并将其重定向到托管我网站的网站页面,而不是重定向仅留在页面选项卡中的iframe。
这可能是因为在$redirect_uri
我给其中的应用程序托管的网站的地址,但是当我尝试将$redirect_uri
改变应用程序的页面标签地址的Facebook给这个错误:
An error occurred. Please try again later.
<?php
include ('src/facebook.php');
$app_id = "160323532538730";
$app_secret = "****************";
$redirect_uri = "https://myhostingpage.com/landing.php";
//$redirect_uri = "http://www.facebook.com/Mypage/app_160323532538730";
$config = array();
$config["appId"] = $app_id;
$config["secret"] = $app_secret;
$config["fileUpload"] = true;
// optional
$facebook = new Facebook($config);
$user = $facebook -> getUser();
if ($user) {
$logoutUrl = $facebook -> getLogoutUrl();
$user_profile = $facebook -> api('/me');
$signed_request = $facebook -> getSignedRequest();
list($encoded_sig, $payload) = explode('.', $_REQUEST["signed_request"], 2);
$signed_request = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
$access_token = null;
if (!empty($_SESSION['access_token'])) {
$access_token = $_SESSION['access_token'];
} else if (!empty($signed_request['oauth_token'])) {
$access_token = $signed_request['oauth_token'];
}
if ($access_token != null) {
$id = $signed_request["user_id"];
$authorized_code = $_GET["code"];
$oauth_token = $signed_request["oauth_token"];
$like_status = $signed_request["page"]["liked"];
if ($like_status) {
echo "hello";
} else {
echo "Like this page";
}
} else if (!empty($_GET["error"])) {
echo "user hasn't authorized your app";
} else if (!empty($_GET["code"])) {
$authorized_code = $_GET["code"];
$authenticate_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&redirect_uri=" . $redirect_uri . "&client_secret=" . $app_secret . "&code=" . $authorized_code . "";
$access_token = $facebook -> getAccessToken();
$_SESSION['access_token'] = $access_token;
header('Location: http://www.facebook.com/Mypage/app_160323532538730');
}
} else {
$loginUrl = $facebook -> getLoginUrl(array('scope' => 'publish_stream email user_photos', 'redirect_uri' => $redirect_uri));
echo("<script>top.location.href='" . $loginUrl . "' </script>");
}
?>
我不是用facebook api工作超过1年,很多事情因此而改变。但我认为它关于画布网址问题,请检查您的应用程序配置canvas_url是否与位于主机 – safarov 2012-03-29 21:09:38