1

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

  1. 当用户单击 Web 应用程序上的“与 Facebook 连接”按钮时,另一个选项卡将在他的浏览器中打开,其中包含允许他验证应用程序的 Facebook 登录链接。

  2. 用户验证应用程序后,登录选项卡将关闭,用户将位于原始 Web 应用程序页面

  3. Web 应用程序将检测到用户已与 Facebook 建立连接,并将用户登录。

现在,我能想到的唯一解决方案是让网络应用程序不断查询 Facebook 以查看用户是否已登录,有没有更好的方法呢?

4

1 回答 1

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>
于 2012-08-21T06:17:03.970 回答