Facebook connect fbs_[app_id] cookie未从JavaScript SDK设置



我通过JavaScript SDK使用Graph API,就像这样(这是直接从文档中获取的基本示例):

<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

我需要后端访问API (fbs_249274258430595)的cookie没有被设置。

只有fbsr_249274258430595存在,这不是我需要的。我用Firebug的FireCookie扩展进行了测试。

我真的不明白为什么这个基本的例子不能正常工作-这意味着我想从后端代码(PHP, Ruby等)使用API。

任何想法?

另一方面,我最终设置了自己的cookie,服务器端可以读取:

我有一个复选框,询问用户是否想在fb上分享,下面是代码:

  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'});
          }
        })
      }
    })
  })

下面是为什么fbs_xxxxx cookie没有被设置的原因:https://developers.facebook.com/blog/post/525/

如果您使用oath=false,那么它确实会被设置,但这只在10月1日之前有效。关于如何从新的fbsr_xxxxxx cookie中获得加密的访问令牌,仍然没有文档。

最新更新