1

当前的 Facebook Javascript SDK 可以与旧的 Facebook API 库一起使用吗?

现在有代码可以通过以下方式加载当前的 Facebook Javascript SDK:

window.fbAsyncInit = function() {
    FB.init({appId: '218565466928', status: true, cookie: true,
             xfbml: true});
};
// [...] initialize it

并且有使用旧 Facebook API 的代码

init_fb_connect('Connect', 'XFBML', :js => :jquery, :app_settings=> '{ifUserNotConnected: fb_user_not_connected}' ) do

这是FacebookerRubygem。他们能以某种方式一起工作吗?如果我两者都有,那么新添加的“喜欢”按钮将不起作用。如果我删除了较旧的 Facebooker 代码,那么“使用 Facebook 登录”和“分享”按钮将不起作用。有任何想法吗?


更新: 旧代码执行以下操作:

<a class="facebook-connect-link " href="#" 
  onclick="; FB.Connect.requireSession(fb_after_connect, null, true); return false;"
  rel="nofollow">Sign in with Facebook</a>  

<a href="#" onclick="FB.Connect.streamPublish('', {'name': 'Some product name' ...

  $('.login-button').each(function() {
    FB.XFBML.Host.addElement(new FB.XFBML.LoginButton(this));  
  })
4

1 回答 1

1

转换 JavaScript API 相对容易。我不确定您的服务器端会受到多少影响。以下是您可能需要的基本方法:

//Check if user is logged in right now.
FB.getLoginStatus(function(response) {
  if (response.session) {
    // logged in and connected user, someone you know
  } else {
    // no user session available, someone you dont know
  }
});

//Callback fired when user logs out/logs in.
FB.Event.subscribe('auth.sessionChange', function(response) {
  // do something with response.session
});

//To force login (on login btn click).
FB.login(function(response) {
  if (response.session) {
    // user successfully logged in
    fb_after_connect();
  } else {
    // user cancelled login
  }
});

//Post to feed.
FB.api('/me/feed', 'post', { body: "message" }, function(response) {
  if (!response || response.error) {
    alert('Error occured');
  } else {
    alert('Post ID: ' + response);
  }
});

如果您不想转换为新的 API,那么您可以将 like 按钮嵌入 iframe。无论如何,您迟早都必须转换您的项目,所以最好现在就这样做。

于 2010-10-12T19:39:56.427 回答