[英]FB Login Button Not Authenticating
我正在尝试将fb登录集成到我的网站中 。 如果未登录fb,请单击该按钮,然后要求fb凭据,然后什么也不做。 它只是将发帖请求发送到Facebook / connect / ping,状态为强制302
这是代码
<script>
var isLoaded=false;
window.fbAsyncInit = function() {
FB.init({
appId : '{{app_id}}',
status : true,
xfbml : true
});
};
isLoaded=true;
function checkIfLoaded() {
if(isLoaded) console.log("LOADED!");
else console.log("NOT YET!");
return false;
}
(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";js.async=true;
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
FB.Event.subscribe('auth.authResponseChange', function(response) {
if (response.status === 'connected') {
onLogin(response);
} else if (response.status === 'not_authorized') {
FB.login();
} else {
FB.login();
}
});
function onLogin(response) {
console.log('login succ');
var status=response.status;
var accessToken=response.authResponse.accessToken;
var expiresIn=response.authResponse.expiresIn;
var signedRequest=response.authResponse.signedRequest;
var userID=response.authResponse.userID;
$("#status").val(status);
$("#accessToken").val(accessToken);
$("expiresIn").val(expiresIn);
$("signedRequest").val(signedRequest);
$("userID").val(userID);
$("#form").submit();
}
</script>
<a href="#" onclick="checkIfLoaded();">Check</a>
<h2>User</h2>
<div class="fb-login-button" data-max-rows="1" data-size="medium" data-show-faces="false" data-auto-logout-link="false"></div>
在我的应用程序仪表板中,我刚刚添加了一个具有上述站点名称的平台,没有其他配置。
问题在于,由于您尝试订阅此事件时未初始化FB
, FB.Event
未订阅FB.Event
。 有关错误,请参见控制台,您将看到:
FB未定义
原因是FB对象是在window.fbAsyncInit
下异步定义的,因此无论何时要进行API调用或使用FB
,都必须在定义FB
之后完成。
因此,解决问题的方法是,在定义FB
之后(而不是在定义FB
之前)编写FB.event
,就像这样-
window.fbAsyncInit = function() {
FB.init({
appId : '{{app_id}}',
status : true,
xfbml : true
});
// write all your "FB" code here, since the FB is defined now
FB.Event.subscribe('auth.authResponseChange', function(response) {
if (response.status === 'connected') {
onLogin(response);
} else if (response.status === 'not_authorized') {
FB.login();
} else {
FB.login();
}
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.