Intereting Posts
Отключить ошибки E_STRICT в файле php.ini по-прежнему вызывает ошибки Как сравнить две даты в php и echo более новые? Неверный номер страницы в функции setPage (): 0 как фильтровать, скрывая / показывая divs с динамическими атрибутами? Почему двойной символ подчеркивания (__) в php? Как настроить пользовательские заголовки для отдельных действий контроллера в ZF2? FOSUserBundle или PUGXMultiUserBundle имеют два разных профиля пользователя (Symfony2) PHP 2D Array выводит все комбинации Правила проверки формы кода CodeIgniter для флажка function.session-start отображается на странице входа в действие с другими правильными ссылками, почему так и как проверить сеанс для входа в действие-форму Получить идентификатор транзакции заказа от authorize.net Авторизовать AIM Загрузка файла PHP в Ajax с использованием onchange Ссылка: что такое переменная область, какие переменные доступны из того, где и какие ошибки «неопределенной переменной»? Каково использование символа @ в PHP? Symfony2 Form заполнить поля данными

Перенаправление приложений iFrame для Facebook

Я пишу приложение в 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); 

    Для тех, кого это интересует, я считаю, что нашел способ обойти это. Вместо того, чтобы перенаправлять пользователя обратно в приложение, я перенаправляю их на небольшой скрипт, который затем перенаправляет обратно на вкладку страницы. Поскольку приложение уже разрешено, все работает, и signed_request передается вместе с информацией пользователя. Я не знаю, действительно ли это законный способ, но он работает.

    Установите переменную переадресации на целевую страницу:

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

    Установите redirect_uri на «http [s]: //apps.facebook.com/YOUR_APP/» вместо «http [s]: //apps.facebook.com/YOUR_APP». Обратите внимание на конечную косую черту!

    Я понял, что использование javascript sdk намного лучше, когда нерешенные проблемы с перенаправлением возникают с использованием серверных скриптов, реализуют этот небольшой тест, и вы поймете, что большинство вещей происходит с помощью lightbox, т. Е. Над вашим приложением. который сохраняет страницу приложения неповрежденной.

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