我现在使用Facebook Javascript SDK通过Facebook登录连接我的应用程序。如果新用户即将与我的应用程序连接,则用户详细信息将保存在数据库中。如果用户已存在,则将通过Facebook登录向用户显示相应的页面。有时如果我在浏览器的新选项卡中登录Facebook,那段时间我来到我的应用程序中的Facebook连接页面,Facebook登录会自动登录到我的应用程序页面。我只想在点击facebook登录按钮后登录我的应用程序。怎么办?
<div id="fb-root">
</div>
<script>
//FB initialization
window.fbAsyncInit = function () {
FB.init({
appId: 'XXXXXXXXXX',
channelUrl : '//connect.facebook.net/en_US/all.js',
status : true,
cookie : true
});
//Event to check status of the login status
FB.Event.subscribe('auth.authResponseChange', function (response) {
if (response.status === 'connected') {
base_url = base_url + "&access_token=" + response.authResponse.accessToken + "&userId=" + response.authResponse.userID;
window.location.href = base_url;
}
else if (response.status === 'not_authorized') {
FB.login();
} else {
FB.login();
}
});
};
// 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));
<fb:login-button scope="email,read_stream,publish_stream,offline_access,user_location"></fb:login-button>
答案 0 :(得分:0)
我不完全确定你的问题是什么,但听起来你的登录功能是在页面加载上触发而不是在特定事件之后,例如点击。
如果你想将登录功能绑定到id为'login'的元素上,那么以下函数(在jQuery中)就可以了。
$(function() {
$('#login').click(function() {
FB.login(function(response) {
// rest of function definition
}, {scope: 'email'});
});
});
同样,您可以在其他事件之后致电FB.logout()
。