我剛剛創建了一個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