问题类似于 A proper approach to FB auth
但是我只想要客户端代码。
条件 1. 用户不能登录FB。在这种情况下,用户“必须”登录 FB 并有效地登录我的应用程序。显示 FB 登录按钮。2. 用户已经登录FB。未登录我的应用程序。显示 FB 登录按钮。3. 用户登录到 Fb 和我的应用程序。显示应用程序。没有FB登录按钮
问题:如果用户已经登录 FB,FB.login 会导致错误。
我需要社区帮助。我知道这是一个简单的逻辑问题,但是我现在围绕解决方案盘旋了几个小时。
我的代码
<div id="auth-loggedout" onclick="fbLogin()">
<span class="buttonText">Login with Facebook</span>
</div>
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'APP ID', // App ID from the app dashboar
channelUrl : '/channel.html', // Channel file for x-domain comms
status : true, // Check Facebook Login status
xfbml : true // Look for social plugins on the page
});
// this check FB login status on initialization
fbLogin();
};
// listen for and handle auth.statusChange events
var login="false";
function fbLogin(){
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
document.getElementById('auth-loggedout').style.display = 'none';
document.getElementById('appcontainer').style.display = 'block';
login=true;
getDataFromFBAndgetSessionToken();<= This also needs FB object
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook,
// but has not authenticated your app
document.getElementById('auth-loggedout').style.display = 'block';
document.getElementById('appcontainer').style.display = 'none';
} else {
// the user isn't logged in to Facebook.
document.getElementById('auth-loggedout').style.display = 'block';
document.getElementById('appcontainer').style.display = 'none';
}
});
if (login === 'false')
{
FB.login();
}
};
function getDataFromFBAndgetSessionToken() {
FB.api('/me?fields=id,name,first_name,last_name,username', function (response) {
varAccessToken = FB.getAuthResponse()['accessToken'];
userFirstName = response.first_name;
var User = new classUser();
User.set_access_token(varAccessToken);
User.set_fb_user_id(response.id);
User.set_first_name(userFirstName);
User.set_last_name(response.last_name);
User.set_user_name(response.username);
});
}
// Load the SDK asynchronously
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<script>