Невозможно перенаправить приложение обратно на вкладку его страницы в Facebook - PullRequest
1 голос
/ 30 марта 2012

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

1 Ответ

0 голосов
/ 30 марта 2012

Попробуйте это.

$redirect_uri должно быть вашим URL страницы в Facebook,
и URL-адрес вкладки страницы в конфигурации приложения Facebook должно быть вашим путем к хосту.*

М.

...