Ошибка Facebook после недавних изменений в FB SDK - PullRequest
0 голосов
/ 21 декабря 2011

После довольно разочаровывающего поединка с Facebook OAuth 2 и после того, как мой вход в Facebook Connect полностью прервался на моем сайте (www.thegameeffect.com), я обращаюсь к мудрым умам StackOverflow в надежде получить какое-то руководство.

С 1-2 месяца назад все работало довольно хорошо, но недавно у меня возникли проблемы. По сути, я выполнил шаги, описанные на сайте разработчиков FB, и нашел здесь несколько других справочных руководств, таких как эта ссылка: (/5675182/izmeneniya-v-failah-cookie-i-oauth-2-0-v-facebook) и, к сожалению, не повезло.

Мой код FB.Init выглядит следующим образом:

        <div id="fb-root"></div>
        <script type="text/javascript">
            window.fbAsyncInit = function () {
                FB.init({ appId: '145290112183820', status: true, cookie: true, xfbml: true, channelUrl: 'http://www.thegameeffect.com/fbchannel.html' });
                //, oauth:true
            };

            (function () {
//                var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; }
//                js = d.createElement('script'); js.id = id; js.async = true;
//                js.src = "//connect.facebook.net/en_US/all.js";
//                d.getElementsByTagName('head')[0].appendChild(js);
                var e = document.createElement('script'); e.async = true;
                e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#xfbml=1';
                document.getElementById('fb-root').appendChild(e);
            } ());

        </script> 

Я испробовал все варианты этого, с oauth: true включено, channelurl исключено, функция самовоспроизведения с незакомментированной верхней частью, и все же все, что происходит, когда я пытаюсь войти в систему, это кратковременное появление окна auth, а затем исчезает. Код, который выполняется при нажатии на значок FB в верхнем левом углу заголовка, находится ниже:

    FB.login(function (response) {                    
         if (response.session) {   
         // do server side work (this never gets hit)
         }
    });

Есть предложения?

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

Итак, после еще нескольких копаний и отладки я наконец нашел решение.Благодаря manishekhawat и серверной части я смог заставить работать на стороне javascript, а на сервере - благодаря этому удивительному сообщению:

http://amirrajan.net/Blog/facebook-oauth-authentication-and-iframe-apps

Для всех, у кого есть проблемы с новым файлом cookie oAuth Facebookв ASP.NET это потрясающее руководство!

Еще раз спасибо за помощь сегодня;Я рад, что наконец-то все в рабочем состоянии.

1 голос
/ 21 декабря 2011

Некоторые незначительные изменения заставят ваш код работать:

window.fbAsyncInit = function () {

FB.init ({appId: '145290112183820', статус: true,cookie: true, xfbml: true, channelUrl: 'http://www.thegameeffect.com/fbchannel.html', oauth: true });

        };

и

FB.login (function (response) {
if ( response.authResponse ) {
}});

0 голосов
/ 21 декабря 2011

Изменение

FB.getLoginStatus(function(response) {
  if (response.session) { ........................
  }

от

    FB.getLoginStatus(function(response) {
      if (response.authResponse) {
........................
      }

Мое приложение на Facebook делает бесконечный цикл в SDK 3.1.1

...