您好我正在使用此功能登录facebook。现在浏览器阻止弹出窗口打开并请求权限。怎么解决?我可以解决问题是浏览器将此视为非用户事件。
function chk_login()
{
window.fbAsyncInit = function() {
FB.init({appId: my_app_id, status: true, cookie: true, xfbml: true,oauth : true});
FB.getLoginStatus(function(response) {
if (response.authResponse) {
var fb_access_token = response.authResponse.accessToken;
FB.api('/me', function(response) {
console.log(response);
});
}
else
{
}
});
FB.login(function(response) {
if (response.authResponse) {
var fb_access_token = response.authResponse.accessToken;
FB.api('/me', function(response) {
console.log(response);
});
}
},{scope: fb_scope});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
}
<img src="fb_login.jpeg" onclick="chk_login()" alt="Facebook Login" style="cursor:pointer;"/>
答案 0 :(得分:2)
不要将整个SDK包装在您的函数中,而是将SDK初始化在页面顶部(<body>
标记之后)并将FB.login()
方法放在登录函数中。类似的东西:
<body>
<script>
var isLoaded = false;
window.fbAsyncInit = function() {
FB.init({appId: my_app_id, status: true, cookie: true, xfbml: true,oauth : true});
isLoaded = true;
FB.getLoginStatus(function(response) {
if (response.authResponse) {
var fb_access_token = response.authResponse.accessToken;
FB.api('/me', function(response) {
console.log(response);
});
}
});
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
function chk_login() {
if(!isLoaded) {
alert("JS-SDK is not yet loaded or something went wrong. Try again.");
return false;
}
FB.login(function(response) {
if (response.authResponse) {
var fb_access_token = response.authResponse.accessToken;
FB.api('/me', function(response) {
console.log(response);
});
}
},{scope: fb_scope});
}
</script>
<img src="fb_login.jpeg" onclick="chk_login()" alt="Facebook Login" style="cursor:pointer;"/>