FB Connect идет в бесконечном цикле с Google Chrome - PullRequest
4 голосов
/ 22 декабря 2010


У меня следующий php-код, который я пытаюсь проверить в FB Connect.


<?php 
define('FACEBOOK_APP_ID', 'YOUR_APP_ID');
define('FACEBOOK_SECRET', 'YOUR_APP_SECRET');</p>

<p>function get_facebook_cookie($app_id, $application_secret) {
  enter code here $args = array();
  parse_str(trim($<em>COOKIE['fbs</em>' . $app_id], '\"'), $args);
  ksort($args);
  $payload = '';
  foreach ($args as $key => $value) {
    if ($key != 'sig') {
      $payload .= $key . '=' . $value;
    }
  }
  if (md5($payload . $application_secret) != $args['sig']) {
    return null;
  }
  return $args;
}
$cookie = get_facebook_cookie(FACEBOOK_APP_ID, FACEBOOK_SECRET);
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:fb="http://www.facebook.com/2008/fbml">
<body><br/>
    <?php if ($cookie) { ?>
      Your user ID is <?= $cookie['uid'] ?>
      <br /> Your Acess Token is 
      <br />
    <?php<br>
        $user = json_decode(file_get_contents(
        'https://graph.facebook.com/me?access_token=' .
        $cookie['access_token']));
        if($user) {
            echo "<br />Display Name = " . $user->name;
            echo "<br />First Name = " . $user->first_name;
            echo "<br />Last Name = " . $user->last_name;
            echo "<br />Birthday = " . $user->birthday;
            echo "<br />Home Town = " . $user->hometown->name;
            echo "<br />Location = " . $user->location->name;
            echo "<br />Email = " . $user->email . "<br />";
        }
    ?>
    <?php } else { ?>
      <fb:login-button perms="email,user_birthday,publish_stream"></fb:login-button>
    <?php } ?></p>

<pre><code><div id="fb-root">&lt;/div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true,
           cookie: true, xfbml: true});
  FB.Event.subscribe('auth.login', function(response) {
    window.location.reload();
  });
</script>


Проблема, с которой я столкнулся, заключается в том, что она отлично работает с IE и Firefox, однако, когда я делаю то же самое с Google Chrome, я запускаю бесконечный цикл, когда нажимаю кнопку перезагрузки / обновления Chrome после входа в систему.
Любые намеки на то, почему это происходит с Chrome? И как этого избежать.

Спасибо,
Mitesh

Ответы [ 2 ]

0 голосов
/ 10 января 2011

этот код

FB.Event.subscribe('auth.login', function(response) {
    window.location.reload();
  });

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

FB.login(function(response) {
if(response.session)
{
window.location.reload();
}
},{perms:’email,user_birthday,user_hometown,user_location’});
0 голосов
/ 22 декабря 2010

Должна быть работа.

<div id="fb-root"></div>

<script type="text/javascript">
window.fbAsyncInit = function () {
FB.init({
    appId: 'APP_ID',
    status: true,
    cookie: true,
    xfbml: true
});
FB.Event.subscribe('auth.login', function () {
    window.location.reload()
})
};
(function () {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e)
}());
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...