我正在从我的网站登录到facebook的任务,我从这里获得了代码github。 这是代码:
$(function() {
var app_id = my_app_id;
var scopes = 'email, user_friends, user_online_presence';
var btn_login = '<a href="#" id="login" class="btn btn-primary">Log In</a>';
var div_session = "<div id='facebook-session'>"+
"<strong></strong>"+
"<img>"+
"<a href='#' id='logout' class='btn btn-danger'>Log Out</a>"+
"</div>";
window.fbAsyncInit = function() {
alert("init");
FB.init({
appId : app_id,
status : true,
cookie : true,
xfbml : true,
version : 'v2.1'
});
FB.getLoginStatus(function(response) {
statusChangeCallback(response, function() {});
});
};
var statusChangeCallback = function(response, callback) {
console.log(response);
if (response.status === 'connected') {
getFacebookData();
} else {
callback(false);
}
}
var checkLoginState = function(callback) {
FB.getLoginStatus(function(response) {
callback(response);
});
}
var getFacebookData = function() {
FB.api('/me', function(response) {
$('#login').after(div_session);
$('#login').remove();
$('#facebook-session strong').text("welcome: "+response.name);
$('#facebook-session img').attr('src','http://graph.facebook.com/'+response.id+'/picture?type=large');
});
}
var facebookLogin = function() {
checkLoginState(function(data) {
if (data.status !== 'connected') {
FB.login(function(response) {
if (response.status === 'connected'){
getFacebookData();
}
}, {scope: scopes});
}
})
}
var facebookLogout = function() {
checkLoginState(function(data) {
if (data.status === 'connected') {
FB.logout(function(response) {
$('#facebook-session').before(btn_login);
$('#facebook-session').remove();
})
}
})
}
$(document).on('click', '#login', function(e) {
e.preventDefault();
facebookLogin();
})
$(document).on('click', '#logout', function(e) {
e.preventDefault();
if (confirm("Are you sure"))
facebookLogout();
else
return false;
})
})
我在facebook开发者上创建了一个帐户并获得了我在代码中放入的id(my_app_id),问题是当我使用其他帐户登录时,返回的响应对象会给我“not_authorized”状态。 我希望能够使用任何帐户登录并获取我想要的信息(如user_name,profile_picture等...)。只有当我使用我在facebook开发人员上创建的帐户登录时,才会收到这些信息。 另一个问题是:
var facebookLogin = function() {
checkLoginState(function(data) {
if (data.status !== 'connected') {alert("facebookLogin");
FB.login(function(response) {
if (response.status === 'connected'){
getFacebookData();
}
}, {scope: scopes});
}
})
}
当我登录帐户时,它会获取Facebook数据,这是帐户未登录的条件。
我的意思是有一个行检查用户是否登录if (data.status !== 'connected')
,其他条件是验证用户未登录?
答案 0 :(得分:0)
我建议您在没有jQuery或其他第三方库的空白页/项目中使用docs中的最新API和指南开始测试。
一旦设置完成并正常工作,就开始添加其他库,看看它是怎么回事。
此外,如果您在使用不同帐户测试应用时遇到问题,最有可能的原因是您的应用处于开发模式,并且您正在测试的帐户未添加到应用的角色中,因此他们实际上无法访问您的应用。尝试将其他帐户添加为admin
,developer
或tester
并再次测试:https://developers.facebook.com/apps/{APP-ID}/roles/