Я только что создал приложение для 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>");
}
?>