2012-06-21 3 views
2

Я знаю, что это простой вопрос, но я не нашел для этого решения. Когда мое приложение открывается человеком, имеющим безопасный просмотр на https://, тогда FB.getLoginStatus не запускается. Сначала я использовал FB._HTTPS, и теперь он работал, и FB удалил все элементы, имеющие ._. Итак, как сделать FB.getLoginStatus, работая с https://? Мой код выглядитFB.getLoginStatus не работает с https

<script src="//connect.facebook.net/en_US/all.js"></script> 
<script> 
     console.log("layout"); 
     //FB._https = (window.location.protocol == "https:"); 
     //FB._https = true; 
     console.log("fb https true"); 
     FB.init({ 
      appId : '<?php echo $this->appId; ?>', 
      channelUrl : '//<?php echo $_SERVER["HTTP_HOST"]; ?>/static/content/channel.php', 
      status : true, // check login status 
      cookie : true, // enable cookies to allow the server to access the session 
      xfbml : true // parse XFBML 
     }); 
    </script> 
function PostAction(custom_action) 
{ 
    console.log('outside of fbgetlogin'); 
    FB.getLoginStatus(function(response) 
    { 
     console.log("in getlogin status"); 
     if (response.authResponse) { 
      fbcallBack(response); 
     } else { 
      FB.login(fbcallBack, {scope:'publish_stream'}); 
     } 
    }); 
} 

Мой файл содержит channel.php

<?php 
$cache_expire = 60*60*24*365; 
header("Pragma: public"); 
header("Cache-Control: max-age=".$cache_expire); 
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT'); 
?> 
    <script src="//connect.facebook.net/en_US/all.js"></script> 

Моя PostAction функция срабатывает при onclick события. FB.getLoginStatus is triggered when user is on http: // bit not triggered when user is on https: // `

Может ли любое тело сказать мне, как заставить getloginstatus работать с https: //?

Проблема обновления в деталях

Позвольте мне рассказать вам эту проблему в деталях. Я реализовал Action gbs of facebook. Я выполнил три глагола. Хотите, Есть и рекомендую. Теперь я хочу проверить статус входа пользователя, когда пользователь нажимает на эту кнопку. Так как вы видите, что я вызывал функцию PostAction() в onclick-событии на моей пользовательской кнопке. Теперь на этом мероприятии я хочу проверить, вошел ли пользователь в систему или нет. Эта функция существует в другом файле. И функция init существует в файле макета макета (для точки обобщения). Теперь, как я могу справиться с этой ситуацией?

ответ

1

вам нужно будет использовать асинхронную загрузку и вызвать getLoginStatus из с в.

<div id="fb-root"></div> 
<script> 
     window.fbAsyncInit = function() { 
     FB.init({ 
    appId : '135669679827333', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true, // parse XFBML 
    channelUrl : 'https://anotherfeed.com/emo/channel.html', // channel.html file 
    oauth : true // enable OAuth 2.0 
     }); 
    //  
    FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
    // the user is logged in and has authenticated your 
    // app, and response.authResponse supplies 
    // the user's ID, a valid access token, a signed 
    // request, and the time the access token 
    // and signed request each expire 
    var uid = response.authResponse.userID; 
    var accessToken = response.authResponse.accessToken; 
    } else if (response.status === 'not_authorized') { 
    // the user is logged in to Facebook, 
    // but has not authenticated your app 
    } else { 
    // the user isn't logged in to Facebook. 
    } 
}); 
//   
     }); 
     }; 
    // Load the SDK Asynchronously 
(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 
</script> 
+1

привет Шон. на самом деле моя функция init и получить статус входа - это два разных файла. Мой файл layout.php содержит функцию init и выполняет функцию статуса регистрации в другом файле. как я могу собрать их вместе? –

+0

: - | Я помещаю все мои функции init, GLS в свой index.php чуть ниже тела, поэтому я получаю наилучшие результаты. Я думаю, мне нужно будет увидеть полный макет ваших страниц, чтобы помочь вам в этом. –

+0

Позвольте мне рассказать вам о проблеме в деталях. Я реализовал Action gbs of facebook. Я выполнил три глагола. Хотите, Есть и рекомендую. Теперь я хочу проверить статус входа пользователя, когда пользователь нажимает на эту кнопку. Так как вы видите, что я вызывал функцию PostAction() в onclick-событии на моей пользовательской кнопке. Теперь на этом мероприятии я хочу проверить, вошел ли пользователь в систему или нет. Эта функция существует в другом файле. И функция init существует в файле макета макета (для точки обобщения). Теперь, как я могу справиться с этой ситуацией? –

Смежные вопросы