无需重新加载页面即可与Facebook连接

时间:2012-08-20 22:32:23

标签: facebook facebook-graph-api facebook-javascript-sdk facebook-php-sdk

我正在编写一个依赖于通过Facebook登录的网络应用程序。这就是我想要做的事情:

  1. 当用户点击网络上的“与Facebook连接”按钮时 应用程序,另一个选项卡将在他的浏览器中打开Facebook登录 链接,让他验证应用程序。

  2. 用户验证应用后,登录标签将关闭,即 用户将在原始网络应用页面上

  3. 网络应用会检测到用户已与Facebook连接, 并将用户登录。

  4. 目前,我能想到的唯一解决方案是让网络应用程序不断查询Facebook以查看用户是否已登录,是否有更好的方法可以执行此操作?

1 个答案:

答案 0 :(得分:2)

将登录与Facebook Javascript SDK集成。 (而不是PHP sdk)您不需要重新加载页面。您可以在回调中处理登录的用户状态。

//load the async FB sdk
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here
  };

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));

//Do something when the user is logged in
FB.Event.subscribe('auth.login', function(response) {
  //do something with response object
});
</script>