Перенаправление приложения Facebook iFrame - PullRequest
1 голос
/ 14 февраля 2011

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

Ответы [ 4 ]

4 голосов
/ 14 февраля 2011

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

0 голосов
/ 29 мая 2013

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

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

0 голосов
/ 13 сентября 2011

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

0 голосов
/ 14 февраля 2011

Пожалуйста, установите переменную перенаправления на целевую страницу:

$redirect = "http://foo.com";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...