我正在编写一个依赖于通过Facebook登录的网络应用程序。这就是我想要做的事情:
当用户点击网络上的“与Facebook连接”按钮时 应用程序,另一个选项卡将在他的浏览器中打开Facebook登录 链接,让他验证应用程序。
用户验证应用后,登录标签将关闭,即 用户将在原始网络应用页面上
网络应用会检测到用户已与Facebook连接, 并将用户登录。
目前,我能想到的唯一解决方案是让网络应用程序不断查询Facebook以查看用户是否已登录,是否有更好的方法可以执行此操作?
答案 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>