Как я могу остановить показ моего сайта в Facebook? - PullRequest
0 голосов
/ 26 апреля 2011

Я использую Facebook для управления логином для моего сайта.Я также использую PHP SDK для вызова Graph API для получения списков друзей, комментариев, сообщений и т. Д.

Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы сайт был автономным, чтобы пользователь переходил по ссылкеиз Facebook, а затем заходит на сайт.

Это вроде работает, но иногда, когда пользователь переходит по ссылке, он видит главную страницу моего сайта в области холста Facebook.Мне не удалось воспроизвести это полностью, поэтому я не приписал обстоятельства, при которых это происходит.однако, когда это происходит, если я нажимаю «Назад» в браузере, я возвращаюсь на свой собственный сайт.

Похоже, что ссылка переносит пользователя из Facebook на мой сайт, который затем вызывает Facebook дляубедитесь, что пользователь вошел в систему, но по какой-то причине он не возвращается на мой сайт.но, как я уже сказал, я не уверен.

В любом случае, у кого-нибудь есть идеи, в чем может быть проблема?

Мой код для входа в систему:

// Create new Facebook object
$facebook = new Facebook(array(
  'appId'  => APP_ID,
  'secret' => APP_SECRET,
  'cookie' => true, // enable optional cookie support
));

// Create login url, in case user is not logged in or session has expired
$loginUrl = $facebook->getLoginUrl($params = array('canvas' => 0, 'fbconnect' => 0, 'req_perms' => 'publish_stream', 'cancel_url' => 'http://www.pubfish.com'));

// Get current facebook session
$session = $facebook->getSession();
$me = null;

// Session based API call.
if ($session) { // If session exists, make sure it's still valid
 try { // Get session to see whether it's valid
  // User is logged in and has authorised application already
  $uid = $facebook->getUser();
  $me = $facebook->api('/me');
 } catch (FacebookApiException $e) {
  echo "<script type='text/javascript'>top.location.href = '".$loginUrl."';</script>";
  error_log($e);
 }
}else { // No session - so ask user to log in
 $url=$facebook->getLoginUrl(array('canvas' => 1,'fbconnect' => 0));
 echo ('<script type="text/javascript">top.location.href=\''.$url.'\';</script>');
}

1 Ответ

1 голос
/ 26 апреля 2011

Вы пытались установить 'next', например, так: $ params = array ('canvas' => 0, 'fbconnect' => 0, 'req_perms' => 'publish_stream', 'cancel_url' => 'http://www.pubfish.com', 'next' => 'http://www.pubfish.com')? Если все остальное терпит неудачу, вы можете использовать это, чтобы вырваться из холста iframe:

<script>
$(document).ready (function () {
if (window != top) top.location.href = location.href;
});
</script>
...