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

目前的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 

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


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

  

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

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

转换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,则可以将按钮嵌入为iframe。 迟早你不得不转换你的项目,所以不妨现在就去做。