我使用javascript代码在我的项目中实现了facebook登录。它工作正常,但现在它无法正常工作。登录弹出窗口也无法正常工作。
代码在这里
<fb:login-button autologoutlink="true" perms="email,user_birthday,status_update,publish_stream"></fb:login-button>
我将权限更改为范围。弹出窗口出现但脚本问题仍然存在。
使用的脚本代码:
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({appId: 'APPID', status: true, cookie: true, xfbml: true});
/* All the events registered */
FB.Event.subscribe('auth.login', function(response) {
// do something with response
login();
});
FB.Event.subscribe('auth.logout', function(response) {
// do something with response
logout();
});
FB.getLoginStatus(function(response) {
if (response.session) {
// logged in and connected user, someone you know
login();
}
});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
function login(){
FB.api('/me', function(response) {
fqlQuery();//fqlquery function
});
}
function logout(){
document.getElementById('login').style.display = "none";
}
function fqlQuery(){
FB.api('/me', function(response) {
var query = FB.Data.query('select name, hometown_location, sex, pic_square from user where uid={0}', response.id);
query.wait(function(rows) {
document.getElementById('name').innerHTML =
'Your name: ' + rows[0].name + "<br />" +
'<img src="' + rows[0].pic_square + '" alt="" />' + "<br />";
});
});
}
有没有其他方法来纠正这个问题?请帮帮....
答案 0 :(得分:0)
我认为你在加载facebook javascript SDK时缺少查询字符串中的APP ID。每https://developers.facebook.com/docs/reference/plugins/login/他们因某种原因需要它
<div id="fb-root"></div>
<script>(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#xfbml=1&appId=APP_ID";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
另外我注意到您的登录按钮HTML没有正确的属性。根据文档,show-faces
,width
,max-rows
和scope
是唯一有效的参数。