Facebook connect fbs_ [app_id] cookie не устанавливается из JavaScript SDK - PullRequest
3 голосов
/ 05 августа 2011

Я использую Graph API через JavaScript SDK следующим образом (это базовый пример прямо из документации):

<html> 
<head> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script> 

<script type="text/javascript"> 

$(document).ready(function() {
  $('#login').click(function() {

    FB.login(function(response) {
      if (response.authResponse) {
        console.log('Welcome!  Fetching your information.... ');
        FB.api('/me', function(response) {
          console.log('Good to see you, ' + response.name + '.');
        });
      } else {
        console.log('User cancelled login or did not fully authorize.');
      }
    });

  })
})

</script> 

</head> 

<body> 

  Hellow!
  <a href="#" id="login">Login</a> 

  <div id="fb-root"></div> 
  <script src="http://connect.facebook.net/en_US/all.js"></script> 
    <script> 
      window.fbAsyncInit = function() {
        FB.init({
          appId: '249274258430595',
          cookie: true,
          status: true,
          xfbml: true,
          oauth: true
        });
      };
    </script> 

</body> 

</html> 

Также можно протестировать его вживую здесь:

http://bitcells.com

Этот cookie, который мне нужен для внутреннего доступа к API (fbs_249274258430595), не установлен.

Присутствует только то, что называется fbsr_249274258430595, и это не то, что мне нужно.Я протестировал это с расширением FireCookie для Firebug.

Я действительно не понимаю, как этот базовый пример работает неправильно - это означает, что я хочу использовать API из кода бэкэнда (PHP, Ruby и т. Д.).

Есть идеи?

Спасибо!

Дэвид

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

С другой стороны, я установил свой собственный файл cookie, который может читать серверная сторона:

У меня есть один флажок, который спрашивает пользователя, хочет ли он поделиться на фб, вот код:

  function setFbCookies(response) {
    Cookie.set('fb_access_token', response.authResponse.accessToken, {path: '/'})
    Cookie.set('fb_user_id', response.authResponse.userID, {path: '/'})
  }

  when('#share_on_fb', function(checkbox) {
    checkbox.observe('change', function(ev) {
      if(checkbox.getValue()) {
        FB.getLoginStatus(function(response) {
          if (response.authResponse) {
            setFbCookies(response)
          } else {
            FB.login(function(response) {
              if (response.authResponse) {
                setFbCookies(response)
              } else {
                checkbox.checked = false
              }
            }, {scope: 'publish_stream'});
          }
        })
      }
    })
  })

И вот причина, по которой cookie fbs_xxxxx не устанавливается: https://developers.facebook.com/blog/post/525/

Похоже, что если вы используете oath = false, тогда оно будет установлено, но это действительно только до 1 октября. До сих пор нет документации о том, как получить зашифрованный токен доступа из нового файла cookie fbsr_xxxxxx.

0 голосов
/ 29 октября 2011

Ответ здесь:

python oauth 2.0 новый файл cookie fbsr facebook, ошибка проверки кода подтверждения

Код, который только что сохранил мой keister и может сохранить ваш какхорошо здесь:

https://gist.github.com/1190267

...