Не удалось получить facebook access_token со стороны сервера, SDK загружается слишком медленно?

Привет, я использую неофициальный fb Coldfusion SDK, мне пришлось преобразовать его все от использования CFscript до обычных cf-функций, потому что я все еще на CF7. Кажется, все работает, но я не уверен, почему при попытке найти файл cookie при входе в систему на стороне сервера он не найден. Кажется, в Chorme все в порядке, но FF, IE и Opera имеют одну и ту же проблему.

На index.cfm у меня есть кнопка fb:login, при нажатии которой вы получаете экран входа в систему, после успешного входа в систему обновление index.cfm запускает мои методы FacebookApp, но возвращает пустое значение для access_token при чтении со стороны сервера. Это связано с тем, что на стороне сервера я пытаюсь получить информацию из файла cookie, но файл cookie не был создан. Я также вывел значение access_token, но оно возвращается как пустое. Когда я нажимаю F5 примерно через секунду, я вижу значение для моего access_token в своем выводе. В то же время, если я использую предупреждение js для отображения access_token в getLoginStatus, я вижу значение.

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

Любые предложения, что я могу сделать? Я попытался добавить тайм-аут js, чтобы замедлить getLoginStatus, чтобы у него было время прочитать файл cookie, но у меня не было никакой радости. Пожалуйста помоги.

вверху страницы у меня есть это

<!doctype html PUBLIC "-//W3C//Dtd html 4.0 Transitional//EN">
<html xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml">

После тега body у меня есть следующее

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

            <script>
              window.fbAsyncInit = function() {
                 FB.init({
                  appId  : 'xxxxxxxxxxxxxxxx',
                  cookie  : true, // enable cookies to allow the server to access the session
                  oauth   : true, // OAuth 2.0
                  status  : true, // check login status
                  xfbml   : true, // parse XFBML
                  channelUrl: document.location.protocol + './/www.sitename.com/fbchannel.html' //custom channel
                });

                // whenever the user logs in or logs out, we refresh the page
                FB.Event.subscribe('auth.login', function(response) {
                   window.location.reload();
                   alert('login');
                });

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

                FB.getLoginStatus(function(response) {
                  if (response.status == 'connected') {
                    // the user is logged in and connected to 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;

                    //alert('end');
                   // alert('login url called '+unescape(window.location.pathname));
                    // whenever the user logs in we refresh the page

                    //alert(accessToken);

                  } else if (response.status == 'not_authorized') {
                    // the user is logged in to Facebook, 
                    //but not connected to the app
                  } else {
                    // the user isn't even logged in to Facebook.
                  }
                 });

              };

              (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>

Где-то под тем, что выше, у меня есть кнопка

<fb:login-button scope="publish_stream,email" autologoutlink="true">Connect with FB</fb:login-button>

person david-l    schedule 21.12.2011    source источник


Ответы (1)


Потратив ДНИ на это, пытаясь выяснить проблему, я столкнулся с это и это сделало мой день, проблема решена! Спасибо чвк.

person david-l    schedule 28.12.2011